Next.jsカスタムキャッシュハンドラー
キャッシュされたページとデータを永続ストレージに保存したい場合、またはNext.jsアプリケーションの複数のコンテナまたはインスタンス間でキャッシュを共有したい場合は、Next.jsキャッシュの場所を設定できます。
補足:
cacheHandler設定はISRおよびルートハンドラーレスポンスの保存と再検証などのサーバーキャッシュ操作向けにNext.jsで使用されます。'use cache'、'use cache: remote'、'use cache: private'では使用されず、これらは独自にキャッシュを管理しています。
next.config.js
module.exports = {
cacheHandler: require.resolve('./cache-handler.js'),
cacheMaxMemorySize: 0, // デフォルトのインメモリキャッシュを無効化
}カスタムキャッシュハンドラーの例を確認し、実装についてさらに詳しく学びましょう。
APIリファレンス
キャッシュハンドラーは以下のメソッドを実装できます:get、set、revalidateTag、およびresetRequestCache。
get()
| パラメータ | 型 | 説明 |
|---|---|---|
key | string | キャッシュされた値へのキー。 |
キャッシュされた値を返すか、見つからない場合はnullを返します。
set()
| パラメータ | 型 | 説明 |
|---|---|---|
key | string | データを保存するキー。 |
data | データまたはnull | キャッシュされるデータ。 |
ctx | { tags: [] } | 提供されるキャッシュタグ。 |
Promise<void>を返します。
revalidateTag()
| パラメータ | 型 | 説明 |
|---|---|---|
tag | stringまたはstring[] | 再検証するキャッシュタグ。 |
Promise<void>を返します。データの再検証またはrevalidateTag()関数についてさらに詳しく学びましょう。
resetRequestCache()
このメソッドは、次のリクエスト前に単一リクエストの一時的なインメモリキャッシュをリセットします。
voidを返します。
補足:
revalidatePathはキャッシュタグの便利なレイヤーです。revalidatePathを呼び出すとrevalidateTag関数が呼び出されます。その後、パスに基づいてキャッシュキーをタグ付けするかどうかを選択できます。
プラットフォームサポート
| デプロイオプション | サポート状況 |
|---|---|
| Node.jsサーバー | はい |
| Dockerコンテナ | はい |
| 静的エクスポート | いいえ |
| アダプター | プラットフォーム固有 |
Next.jsをセルフホスティングする場合のISR設定方法を確認しましょう。
バージョン履歴
| バージョン | 変更内容 |
|---|---|
v14.1.0 | cacheHandlerにリネームされ、安定版になりました。 |
v13.4.0 | revalidateTag向けのincrementalCacheHandlerPath対応。 |
v13.4.0 | スタンドアロン出力向けのincrementalCacheHandlerPath対応。 |
v12.2.0 | 試験的なincrementalCacheHandlerPathが追加されました。 |