Client Plugin
キャッシュ
コード例: client-caching
Ktor クライアントは、以前にフェッチしたリソースをインメモリキャッシュまたは永続キャッシュに保存できる HttpCache プラグインを提供します。
依存関係の追加
HttpCache
は ktor-client-core アーティファクトのみを必要とし、特定の依存関係は不要です。
インメモリキャッシュ
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
ヘッダーを持つリソースに対して2つの連続したリクエストを行った場合、 クライアントは最初の要求のみを実行し、データがすでにキャッシュに保存されているため、2番目の要求はスキップします。
永続キャッシュ
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。