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
函数。然后,根据该存储是作为共享缓存还是私有缓存使用,将其传递给 publicStorage
或 privateStorage
函数。
kotlin
val client = HttpClient(CIO) {
install(HttpCache) {
val cacheFile = Files.createDirectories(Paths.get("build/cache")).toFile()
publicStorage(FileStorage(cacheFile))
}
}
您可以在这里找到完整示例:client-caching。