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。
