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