コンテンツにスキップ

キャッシュミドルウェア

キャッシュミドルウェアは、Web標準のCache APIを使用します。

キャッシュミドルウェアは現在、カスタムドメインを使用するCloudflare Workersプロジェクトと、Deno 1.26+を使用するDenoプロジェクトをサポートしています。Deno Deployでも利用可能です。

Cloudflare WorkersはCache-Controlヘッダーを尊重し、キャッシュされたレスポンスを返します。詳細については、Cloudflare Docsのキャッシュを参照してください。Denoはヘッダーを尊重しないため、キャッシュを更新する必要がある場合は、独自のメカニズムを実装する必要があります。

各プラットフォームでの手順については、以下の使用法を参照してください。

インポート

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

使用法

ts
app.get(
  '*',
  cache({
    cacheName: 'my-app',
    cacheControl: 'max-age=3600',
  })
)
ts
// Must use `wait: true` for the Deno runtime
app.get(
  '*',
  cache({
    cacheName: 'my-app',
    cacheControl: 'max-age=3600',
    wait: true,
  })
)

オプション

必須 cacheName: string | (c: Context) => string | Promise<string>

キャッシュの名前。異なる識別子を持つ複数のキャッシュを格納するために使用できます。

オプション wait: boolean

Honoがリクエストを続行する前に、cache.put関数のPromiseが解決されるのを待つかどうかを示すブール値。Deno環境ではtrueにする必要があります。デフォルトはfalseです。

オプション cacheControl: string

Cache-Controlヘッダーのディレクティブの文字列。詳細については、MDNドキュメントを参照してください。このオプションが指定されていない場合、リクエストにCache-Controlヘッダーは追加されません。

オプション vary: string | string[]

レスポンスにVaryヘッダーを設定します。元のレスポンスヘッダーに既にVaryヘッダーが含まれている場合、値はマージされ、重複が削除されます。これを*に設定すると、エラーが発生します。Varyヘッダーとそのキャッシュ戦略への影響の詳細については、MDNドキュメントを参照してください。

オプション keyGenerator: (c: Context) => string | Promise<string>

cacheNameストア内のすべてのリクエストに対してキーを生成します。これは、リクエストパラメーターまたはコンテキストパラメーターに基づいてデータをキャッシュするために使用できます。デフォルトはc.req.urlです。

MITライセンスの下でリリースされています。