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

영구 캐시

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.