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