revalidateTag
revalidateTag
允许您按需清除与特定缓存标签关联的 缓存数据。
须知:
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 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() })
}
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() })
}