メインコンテンツまでスキップ

revalidateTag

警告: revalidateTagexpireTag に代わるもので、将来のバージョンで削除される予定です。

revalidateTag を使用すると、特定のキャッシュタグに対して、キャッシュデータをオンデマンドでパージできます。

知っておくと良いこと:

  • revalidateTagNode.js および Edge ランタイム の両方で利用可能です。
  • revalidateTag は、パスが次に訪問されたときのみキャッシュを無効にします。つまり、revalidateTag を dynamic route segment で呼び出しても、すぐに多くの再検証が一度にトリガーされることはありません。無効化はパスが次に訪問されたときにのみ発生します。

パラメータ

revalidateTag(tag: string): void;
  • tag: 再検証したいデータに関連付けられているキャッシュタグを表す文字列。文字数は 256 文字以下である必要があります。この値は大文字・小文字を区別します。

次のようにして fetch にタグを追加できます:

fetch(url, { next: { tags: [...] } });

戻り値

revalidateTag は値を返しません。

Server Action

app/actions.ts
'use server'

// 投稿を追加する関数のインポート
import { revalidateTag } from 'next/cache'

export default async function submit() {
await addPost()
revalidateTag('posts') // "posts" タグを再検証する
}

Route Handler

app/api/revalidate/route.ts
import type { NextRequest } from 'next/server'
import { revalidateTag } from 'next/cache'

export async function GET(request: NextRequest) {
const tag = request.nextUrl.searchParams.get('tag') // URLパラメータからタグを取得
revalidateTag(tag) // 取得したタグを再検証する
return Response.json({ revalidated: true, now: Date.now() }) // 再検証の結果をJSONで返す
}