コンテンツへスキップ

revalidateTag

revalidateTag を使うと、特定のキャッシュタグに対してオンデマンドでキャッシュされたデータを消去できます。

知っておくと良いこと:

  • revalidateTag は、Node.js と Edge ランタイムの両方で使用できます。
  • revalidateTag は、パスが次にアクセスされたときにのみキャッシュを無効にします。つまり、動的なルートセグメントで revalidateTag を呼び出しても、一度に多数の再検証が即座にトリガーされるわけではありません。無効化は、パスが次にアクセスされたときにのみ発生します。

パラメータ

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

次のように fetch にタグを追加できます。

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

戻り値

revalidateTag は値を返しません。

サーバーアクション

app/actions.ts
'use server'
 
import { revalidateTag } from 'next/cache'
 
export default async function submit() {
  await addPost()
  revalidateTag('posts')
}

ルートハンドラー

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')
  revalidateTag(tag)
  return Response.json({ revalidated: true, now: Date.now() })
}