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
헤더를 가진 리소스에 두 번 연속으로 요청을 보낸다면, 클라이언트는 첫 번째 요청만 실행하고 데이터가 이미 캐시에 저장되어 있기 때문에 두 번째 요청은 건너뜁니다.
영구 캐시
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.