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。
