Skip to content
Client Plugin

缓存

代码示例: client-caching

Ktor 客户端提供了 HttpCache 插件,允许您将之前获取的资源保存到内存中或持久化缓存中。

添加依赖项

HttpCache 仅需要 [ktor-client-core](client-dependencies.md) artifact,不需要任何特定的依赖项。

内存缓存

要安装 HttpCache,请将其传递给 客户端配置代码块 中的 install 函数:

kotlin
import io.ktor.client.*
import io.ktor.client.engine.cio.*
import io.ktor.client.plugins.cache.*
//...
val client = HttpClient(CIO) {
    install(HttpCache)
}

这足以使客户端能够将之前获取的资源保存到内存缓存中。例如,如果您对一个带有已配置 Cache-Control 头部信息的资源发出两个连续的 请求,客户端将仅执行第一个请求并跳过第二个请求,因为数据已保存在缓存中。

持久化缓存

Ktor 允许您通过实现 CacheStorage 接口来创建一个持久化缓存。在 JVM 上,您可以通过调用 FileStorage 函数来创建一个文件存储。

要创建一个文件缓存存储,请将 File 实例传递给 FileStorage 函数。然后,根据该存储是作为共享缓存还是私有缓存使用,将其传递给 publicStorageprivateStorage 函数。

kotlin
val client = HttpClient(CIO) {
    install(HttpCache) {
        val cacheFile = Files.createDirectories(Paths.get("build/cache")).toFile()
        publicStorage(FileStorage(cacheFile))
    }
}

您可以在这里找到完整示例:client-caching