Next.js App Routerのfetchキャッシュ仕様
Next.js
フロントエンド
基本動作
- デフォルト設定: fetchリクエストは永続的にキャッシュされる
- 重複排除: 同じURLとオプションを持つリクエストは自動的に重複排除される
- 静的レンダリング: データフェッチを含むルートはデフォルトで静的にレンダリングされる
キャッシュ制御オプション
再検証方法
-
時間ベース再検証
next: { revalidate: 秒数 }
で指定した間隔で自動再検証
-
オンデマンド再検証
revalidatePath('/path')
- 特定のパスのキャッシュを再検証revalidateTag('tag-name')
- 特定のタグのキャッシュを再検証
-
ルートハンドラーでの再検証
- フォーム送信などのイベント後にデータを再検証
実装パターン例
ユースケース別推奨設定
- 頻繁に変更されるデータ:
cache: 'no-store'
- 定期的に更新されるデータ:
next: { revalidate: 秒数 }
- 更新イベントがあるデータ:
next: { tags: ['タグ名'] }
+revalidateTag()
- 静的データ: デフォルト(キャッシュオプションなし)