Skip to content
Client Plugin

キャッシュ

コード例: client-caching

Ktor クライアントは、以前にフェッチしたリソースをインメモリキャッシュまたは永続キャッシュに保存できる HttpCache プラグインを提供します。

依存関係の追加

HttpCachektor-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