キャッシュした内容を、更新されたタイミングで最新にしたい。どうしますか。
時間ベースとオンデマンドの2つです。オンデマンドも即時とは限らず、revalidateTag の推奨形は古い内容を一度返します。更新した本人にすぐ見せるなら Server Action の updateTag です。
面接官が見ているのは再検証の2方式を持っているか。
よくある答えと、面談でどう見られるか
- 時間で切る方法と、更新時に明示的に捨てる方法があり、鮮度要件で使い分ける
両方を持ったうえで基準を言えています。 - 更新処理の中で明示的に再検証する
更新を早く反映したいならこれです。ただし revalidateTag の推奨形は古い内容を一度返すので、更新した本人にすぐ見せたいなら Server Action の中で updateTag を使います。更新経路が複数あると書き漏れる点にも注意します。 - 一定時間で失効するように設定する
捨て漏れが起きないので運用は安定します。即時性が要らないならこれで十分です。 - キャッシュを使わないようにする
安全ではありますが、設問は「キャッシュした内容を最新にしたい」です。やめる判断もあり得ますが、その前に再検証の手段を知っているかを見られます。
面接官は何を見ているか
- 時間で切る方法を挙げた
- 更新時に明示的に捨てる方法を挙げた
- 使い分けの基準に触れた
模範解答
方法は2つあります。
時間ベースは、一定時間が過ぎたら次のアクセスで作り直す方式です。設定が1行で済み、捨て漏れが起きません。多少古くても困らないデータには、これで十分です。
オンデマンドは、更新処理の中から明示的に「このパス(またはタグ)を捨てる」と指示する方式です。更新経路すべてに書く必要があります。
ただし、オンデマンドでも「捨てた瞬間に新しい内容が出る」とは限りません。Next.js 16 で推奨されている revalidateTag(タグ, "max") は、次のリクエストにはいったん古い内容を返し、裏で作り直します(stale-while-revalidate)。更新した本人に結果をすぐ見せたいなら、Server Action の中で updateTag を使います。こちらは次のリクエストが新しいデータを待ちます。revalidatePath は、Server Function から呼べば画面がすぐ更新され、Route Handler から呼んだ場合は、次にそのパスが開かれたときに作り直されます。
使い分けは鮮度要件です。多少古くても困らないものは時間ベース、更新を早く反映したいものはオンデマンド、更新した本人に確実に見せたいものは updateTag、と段階で考えます。全部を即時にしようとせず、時間ベースで妥協できる範囲を広く取る方が運用は安定します。
対象: Next.js 16(App Router) 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。
ここからどう深掘りされるか
この問いに答えられた場合、面談は次の質問に進みます。