revalidateTag
revalidateTag 允許您針對特定的快取標籤,按需清除快取資料。
須知事項:
revalidateTag可在 Node.js 和 Edge 執行環境中使用。revalidateTag只會在下次造訪路徑時使快取失效。這意味著使用動態路由區段呼叫revalidateTag不會立即觸發大量重新驗證,只有當路徑被再次造訪時才會發生失效。
參數
revalidateTag(tag: string): void;tag: 字串類型,代表與您想重新驗證資料相關聯的快取標籤。長度必須小於或等於 256 個字元,且區分大小寫。
您可以透過以下方式為 fetch 添加標籤:
fetch(url, { next: { tags: [...] } });回傳值
revalidateTag 不會回傳任何值。
範例
伺服器動作 (Server Action)
'use server'
import { revalidateTag } from 'next/cache'
export default async function submit() {
await addPost()
revalidateTag('posts')
}'use server'
import { revalidateTag } from 'next/cache'
export default async function submit() {
await addPost()
revalidateTag('posts')
}路由處理器 (Route Handler)
import { 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() })
}import { revalidateTag } from 'next/cache'
export async function GET(request) {
const tag = request.nextUrl.searchParams.get('tag')
revalidateTag(tag)
return Response.json({ revalidated: true, now: Date.now() })
}