revalidateTag

revalidateTag 允许您按需清除与特定缓存标签关联的缓存数据

须知:

  • revalidateTagNode.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')
}

路由处理器 (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() })
}

On this page