Next.js/SEO/Lesson 15
Revalidation戦略 — revalidatePath · revalidateTag · 時間ベース
30分·theory
このチャプター
2/2
TypeScript
Revalidation戦略 — revalidatePath · revalidateTag · 時間ベース
💡 なぜ学ぶのか? — 「新しい記事を書いたのに表示されない」バグの第1位の原因
🎯
Next.js の fetch はデフォルトでキャッシュされます。mutation 後に無効化しなければ、ユーザーは古いデータを見続けます。
💼
4つのツール — `revalidatePath`・`revalidateTag`・`revalidate: N`・`cache: 'no-store'` — それぞれ用途が異なります。
⚡
誤った使い方をすると、キャッシュ効果ゼロ (毎リクエスト SSR) か、データが永久に stale になるかの二極端に陥ります。
🔗
Server Action・Webhook・管理者ページなど、mutation フローにおいて正確な無効化タイミングが重要です。
📈
**一行ルール**: データ fetch に `tags` を付け、mutation Server Action の末尾で `revalidateTag(...)` を呼ぶ — これが90%の答えです。
🏢 실무에서는
ブログ記事を投稿 → 一覧ページと詳細ページを両方無効化。コメント追加 → コメントセクションのみ無効化。管理者が商品価格を変更 → その商品カード・検索結果・カテゴリページをすべて無効化。シナリオごとに使うツールが異なります。
4つのツール — 使い分けマトリクス
1. 4つのツール整理
2. tagsシステム — 最も強力なパターン
revalidatePathより正確 — 複数ページのfetchに同じタグを付けておけば一度にまとめて無効化できる。
3. 階層的タグ戦略
4. revalidatePath — パス単位の無効化
tagsほど正確ではないが、マイグレーションや一時対応に有用。
5. 時間ベースrevalidate (ISR)
ミューテーションがないか少ないデータ(ブログ・ドキュメント・ランディングページ)に適している。
6. まとめ — 意思決定フロー
💡 💡 Revalidation実践の5つのヒント
1. 基本方針 — fetchにtags、ミューテーションにrevalidateTag
90%のケースはこのパターン一つで完結する。
2. revalidatePathはフォールバック用
tagsが難しい場合や素早いマイグレーションが必要な場合のみ使用。精度は低い。
3. cache: 'no-store'は本当にユーザー固有のデータにのみ使う
乱用するとすべてのページがSSRになりサーバー負荷増加・低速化につながる。代わりにその部分だけをClient Componentに分離する。
4. revalidate: Nのヒューリスティック
5. オンデマンドパターン — Webhookで外部から無効化
CMSや外部システムがデータを更新する際に通知を送り、自動的に無効化される。
⚡ 実際に試してみよう — タグベース無効化シミュレーション
複数のページが異なるタグでキャッシュされているとき、revalidateTagが正確に何を無効化するかを確認する。
✏️ JS 코드
📟 コンソール出力
▶ 実行ボタンを押してください
⚠️ ブラウザのサンドボックスで実行 — console.log()のみ対応、alert/fetchは不可
確認クイズ
記事詳細ページのコメントセクションのfetchのみを無効化したい場合、最も正確なツールはどれか?
先に読むとよい概念: Metadata API — generateMetadata + OG/Twitter
次のおすすめ: Python 完全マスター