TL;DR

Next.js で、Data Cache に保存したデータを破棄し、最新のデータを取り直すこと。

仕組み

Revalidate には 2 種類ある。

Time-based Revalidation では、fetch の next.revalidate に秒数を指定する。fetch を使わない関数では unstable_cache の revalidate を使う。Route Segment Config の revalidate で、Layout や Page の既定の間隔も決められる。1 つのルートの中では、各 Layout と Page のうち最も小さい revalidate が、ルート全体の再検証の間隔になる。

On-demand Revalidation では、Server Actions や Route Handler の中で revalidateTag か revalidatePath を呼ぶ。revalidateTag は next.tags で付けたタグを単位に、revalidatePath はルートのパスを単位にキャッシュを無効にする。

例

// 1 時間ごとに再検証する
const data = await fetch("https://...", { next: { revalidate: 3600 } })
import { revalidatePath } from "next/cache"
 
export async function updateUser(id: string) {
  // データを書き換える
  revalidatePath("/profile")
}

注意点

この仕組みは、Next.js 16 で cacheComponents フラグとして導入された Cache Components を使わない場合のものである。公式ドキュメントでは「Previous Model」として扱われている。

関連

出典