Custom Next.js Cache Handler
Next.js では、Pages と App Router のdefault キャッシュハンドラーはファイルシステムの cache を使用します。これは設定が不要ですが、next.config.jsの cacheHandlerフィールドを使用してキャッシュハンドラーをカスタマイズすることができます。
next.config.js
module.exports = {
cacheHandler: require.resolve('./cache-handler.js'),
cacheMaxMemorySize: 0, // disable default in-memory caching
}
custom cache handlerの例を見て、実装について詳しく学びましょう。
API Reference
cache handler は以下の Method を実装できます:get、set、そしてrevalidateTag。
get()
| Parameter | Type | Description |
|---|---|---|
key | string | キャッシュされた value への鍵。 |
キャッシュされた value を返すか、見つからない場合はnullを返します。
set()
| Parameter | Type | Description |
|---|---|---|
key | string | データを保存するためのキー。 |
data | データまたはnull | キャッシュするデータ。 |
ctx | { tags: [] } | 提供された cache タグ。 |
Promise<void>を返します。
revalidateTag()
| Parameter | Type | Description |
|---|---|---|
tag | string | cache タグを revalidate する。 |
Promise<void>を返します。データの再検証やrevalidateTag()関数について詳しく学びましょう。
Good to know:
revalidatePathは cache タグの上に便利なレイヤーです。revalidatePathを呼び出すと、revalidateTag関数が呼び出され、それを使って、path に基づいて cache キーをタグ付けするかどうかを選択できます。
Version History
| Version | Changes |
|---|---|
v14.1.0 | 名前が変更された cacheHandler は安定しています。 |
v13.4.0 | 実験的に incrementalCacheHandlerPath は revalidateTagをサポートします。 |
v13.4.0 | incrementalCacheHandlerPath (実験的)はスタンドアロン出力をサポートします。 |
v12.2.0 | 実験的に incrementalCacheHandlerPath が追加されました。 |