カスタムNext.jsキャッシュハンドラー
キャッシュされたページやデータを永続的なストレージに保存したり、複数のコンテナやNext.jsアプリケーションのインスタンス間でキャッシュを共有したりする場合、Next.jsのキャッシュの場所を設定できます。
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 | 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 | incrementalCacheHandlerPath でrevalidateTag のサポートを追加。 |
導入時期:v13.4.0 | incrementalCacheHandlerPath でスタンドアロン出力のサポートを追加。 |
導入時期:v12.2.0 | 実験的なincrementalCacheHandlerPath が追加されました。 |