Skip to content

캐시 미들웨어

캐시 미들웨어는 웹 표준의 Cache API를 사용한다.

현재 캐시 미들웨어는 커스텀 도메인을 사용하는 Cloudflare Workers 프로젝트와 Deno 1.26+를 사용하는 Deno 프로젝트를 지원한다. 또한 Deno Deploy에서도 사용할 수 있다.

Cloudflare Workers는 Cache-Control 헤더를 존중하고 캐시된 응답을 반환한다. 자세한 내용은 Cloudflare Docs의 Cache를 참고한다. Deno는 헤더를 존중하지 않으므로, 캐시를 업데이트해야 하는 경우 직접 메커니즘을 구현해야 한다.

각 플랫폼별 사용법은 아래 사용법을 참고한다.

Import

ts
import { Hono } from 'hono'
import { cache } from 'hono/cache'

사용 방법

ts
app.get(
  '*',
  cache({
    cacheName: 'my-app',
    cacheControl: 'max-age=3600',
  })
)
ts
// Deno 런타임에서는 `wait: true`를 사용해야 함
app.get(
  '*',
  cache({
    cacheName: 'my-app',
    cacheControl: 'max-age=3600',
    wait: true,
  })
)

옵션

필수 cacheName: string | (c: Context) => string | Promise<string>

캐시의 이름을 지정한다. 서로 다른 식별자를 사용해 여러 캐시를 저장할 때 활용한다.

optional wait: boolean

Hono가 cache.put 함수의 Promise가 완료될 때까지 기다릴지 여부를 나타내는 불리언 값이다. Deno 환경에서는 반드시 true로 설정해야 한다. 기본값은 false이다.

optional cacheControl: string

Cache-Control 헤더를 위한 지시어 문자열이다. 자세한 내용은 MDN 문서를 참고한다. 이 옵션을 제공하지 않으면 요청에 Cache-Control 헤더가 추가되지 않는다.

optional vary: string | string[]

응답에 Vary 헤더를 설정한다. 원본 응답 헤더에 이미 Vary 헤더가 포함되어 있다면, 값이 병합되고 중복 항목은 제거된다. 이 값을 *로 설정하면 오류가 발생한다. Vary 헤더와 캐싱 전략에 대한 자세한 내용은 MDN 문서를 참조한다.

선택 사항 keyGenerator: (c: Context) => string | Promise<string>

cacheName 저장소에 있는 모든 요청에 대한 키를 생성한다. 요청 매개변수나 컨텍스트 매개변수를 기반으로 데이터를 캐시할 때 사용할 수 있다. 기본값은 c.req.url이다.

Released under the MIT License.