跳到内容

自定义 Next.js 缓存处理程序

缓存和重新验证页面(使用增量静态再生)使用相同的共享缓存。当部署到 Vercel时,ISR 缓存会自动持久化到持久存储。

当自托管时,ISR 缓存会存储到 Next.js 服务器上的文件系统(磁盘上)。当使用 Pages 和 App Router 进行自托管时,此功能会自动生效。

如果您想将缓存的页面和数据持久化到持久存储,或者在 Next.js 应用程序的多个容器或实例之间共享缓存,您可以配置 Next.js 缓存位置。

next.config.js
module.exports = {
  cacheHandler: require.resolve('./cache-handler.js'),
  cacheMaxMemorySize: 0, // disable default in-memory caching
}

查看自定义缓存处理程序的示例,并了解有关实现的更多信息。

API 参考

缓存处理程序可以实现以下方法:getsetrevalidateTag

get()

参数类型描述
keystring缓存值的键。

返回缓存的值;如果未找到,则返回 null

set()

参数类型描述
keystring存储数据的键。
data数据或 null要缓存的数据。
ctx{ tags: [] }提供的缓存标签。

返回 Promise<void>

revalidateTag()

参数类型描述
tagstringstring[]要重新验证的缓存标签。

返回 Promise<void>。了解有关重新验证数据revalidateTag() 函数的更多信息。

须知

  • revalidatePath 是缓存标签之上的一个便利层。调用 revalidatePath 将调用您的 revalidateTag 函数,然后您可以选择是否要基于路径标记缓存键。

版本历史

版本变更
v14.1.0重命名为 cacheHandler 并变为稳定版。
v13.4.0incrementalCacheHandlerPath 支持 revalidateTag
v13.4.0incrementalCacheHandlerPath 支持独立输出。
v12.2.0添加了实验性的 incrementalCacheHandlerPath