自定义 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 参考
缓存处理器可以实现以下方法:get、set、revalidateTag 和 resetRequestCache。
get()
| 参数 | 类型 | 描述 |
|---|---|---|
key | string | 缓存值的键。 |
返回缓存的值,如果未找到则返回 null。
set()
| 参数 | 类型 | 描述 |
|---|---|---|
key | string | 存储数据所用的键。 |
data | Data 或 null | 要缓存的数据。 |
ctx | { tags: [] } | 提供的缓存标签。 |
返回 Promise<void>。
revalidateTag()
| 参数 | 类型 | 描述 |
|---|---|---|
tag | string 或 string[] | 要重新验证的缓存标签。 |
返回 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.0 | incrementalCacheHandlerPath 支持 revalidateTag。 |
v13.4.0 | incrementalCacheHandlerPath 支持 standalone 输出。 |
v12.2.0 | 引入实验性的 incrementalCacheHandlerPath。 |