Menu

自定义 Next.js 缓存处理器

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

值得注意的是cacheHandler 配置专门用于 Next.js 的服务器缓存操作,例如存储和重新验证 ISR 和路由处理器响应。它不用于 'use cache''use cache: remote''use cache: private',这些指令独立管理自己的缓存。

next.config.js
module.exports = {
  cacheHandler: require.resolve('./cache-handler.js'),
  cacheMaxMemorySize: 0, // 禁用默认的内存缓存
}

查看自定义缓存处理器示例,了解更多实现细节。

API 参考

缓存处理器可以实现以下方法:getsetrevalidateTagresetRequestCache

get()

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

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

set()

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

返回 Promise<void>

revalidateTag()

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

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

resetRequestCache()

此方法在下一个请求之前重置单个请求的临时内存缓存。

返回 void

值得注意的是

  • revalidatePath 是缓存标签之上的便捷层。调用 revalidatePath 将调用你的 revalidateTag 函数,然后你可以选择是否根据路径标记缓存键。

平台支持

部署选项支持情况
Node.js server
Docker container
Static export
Adapters取决于平台

了解如何在自托管 Next.js 时配置 ISR

版本历史

版本变更
v14.1.0重命名为 cacheHandler 并变为稳定版本。
v13.4.0incrementalCacheHandlerPath 支持 revalidateTag
v13.4.0incrementalCacheHandlerPath 支持 standalone 输出。
v12.2.0引入实验性的 incrementalCacheHandlerPath