缓存

本指南描述了 Chromium 支持的缓存类型,并展示了如何使用它们。

Chromium 支持以下缓存类型:

  • HTTP 缓存
  • Blink 缓存
  • HTML5 应用程序缓存

当从页面发出任何资源请求时,它首先要经过 Blink 加载器和 Blink 缓存。 对浏览器进程的请求可能会也可能不会从那里发出。 当它通过浏览器的网络堆栈时,它会到达 HTTP(磁盘或内存)缓存。没有从页面到缓存的显式通信。

HTML5 应用程序缓存由网页显式使用。 它独立于其他缓存存储数据。

HTTP 缓存

默认情况下,HTTP 缓存将从网络上获取的资源存储在磁盘或内存中。 Chromium 本身决定如何缓存资源以获得最佳性能。

内存缓存将资源存储到进程内存(RAM)或从进程内存加载资源。 这是一种快速但非持久性的方式。 内容仅在您关闭浏览器之前可用。

磁盘缓存是持久的。 缓存的资源被存储到磁中,或从磁盘加载。

在 Windows 上,磁盘缓存存储在用户数据目录的 Cache 文件夹中,可能如下所示:

Users\<user_name>\AppData\Local\JxBrowser\browsercore-<version>\UserData\Cache\

在 macOS 和 Linux 上,磁盘缓存存储在用户的临时目录中。

在 macOS 上它可能看起来像:

/var/folders/jc/8cmxmwhn5w99b_2lhz78k46w0000gq/T/UserData/Cache/

在 Linux 上:

/tmp/UserData/Cache

无痕模式

无痕模式下,Chromium 仅将资源存储在内存中,不使用磁盘。 缓存的资源仅在您删除 Profile 或关闭 Engine之前可用。

HTTP 缓存大小

默认大小是在开始时计算的。 这取决于缓存所在的卷中的可用磁盘空间。

您可以在构建 Engine 时使用适当的选项配置 HTTP 缓存大小。 例如,要设置 32MB 的限制,请使用以下代码:

Engine engine = Engine.newInstance(EngineOptions.newBuilder(...)
        .diskCacheSize(33554432)
        .build());
val engine = Engine.newInstance(EngineOptions.newBuilder(...)
        .diskCacheSize(33554432)
        .build())

如果磁盘缓存大小为零,将自动计算并使用默认值。

清除 HTTP 缓存

要清除与特定 Profile 关联的 HTTP 缓存并等待所有缓存条目都标记为删除:

profile.httpCache().clear().join();
profile.httpCache().clear().join()

使用 Engine.httpCache() 方法,您将获得默认配置文件的 HttpCache 服务。

Go Top