カスタム Next.js キャッシュハンドラー
ページのキャッシュと再検証(Incremental Static Regenerationを使用)では、同じ共有キャッシュを使用します。 Vercel にデプロイすると、ISR キャッシュは自動的に耐久性のあるストレージに永続化されます。
自己ホスティングの場合、ISR キャッシュは Next.js サーバー上のファイルシステム(ディスク)に保存されます。これは、PagesとApp Routerの両方を使用して自己ホスティングする場合、自動的に動作します。
キャッシュされたページとデータを耐久性のあるストレージに永続化したり、Next.js アプリケーションの複数のコンテナやインスタンス間でキャッシュを共有したりしたい場合は、Next.js のキャッシュの場所を設定できます。
next.config.js
module.exports = {
cacheHandler: require.resolve('./cache-handler.js'),
cacheMaxMemorySize: 0, // デフォルトのメモリ内キャッシュを無効にします
}
カスタムキャッシュハンドラーの例を確認し、実装について詳しく学んでください。
APIリファレンス
キャッシュハンドラーは以下のメソッドを実装できます:get
、set
、revalidateTag
get()
パラメーター | 型 | 説明 |
---|---|---|
key | string | キャッシュされている値のキーです |
キャッシュされた値を返します。見つからなければ null
を返します。
set()
パラメーター | 型 | 説明 |
---|---|---|
key | string | データを保存するキーです |
data | Data または null | キャッシュするデータです |
ctx | { tags: [] } | 提供されるキャッシュタグです |
Promise<void>
を返します。
revalidateTag()
パラメーター | 型 | 説明 |
---|---|---|
tag | string or string[] | 再検証するキャッシュタグです |
Promise<void>
を返します。データの再検証について詳しく知るか、revalidateTag()
関数について理解を深めてください。
Good to know:
revalidatePath
はキャッシュタグの上位にある便利なレイヤーです。revalidatePath
を呼び出すと、revalidateTag
関数が呼び出され、そこからパスに基づいてキャッシュキーにタグを付けるかどうか選択できます。
バージョン履歴
バージョン | 変更点 |
---|---|
v14.1.0 | cacheHandler に改名され、安定化しました。 |
v13.4.0 | revalidateTag 用の incrementalCacheHandlerPath をサポートしました。 |
v13.4.0 | スタンドアロン出力用の incrementalCacheHandlerPath をサポートしました。 |
v12.2.0 | 実験的な incrementalCacheHandlerPath が追加されました。 |