自定义 Next.js 缓存处理程序
缓存和重新验证页面(使用增量静态再生)使用相同的共享缓存。当部署到 Vercel时,ISR 缓存会自动持久化到持久存储中。
自行托管时,ISR 缓存会存储到 Next.js 服务器上的文件系统(磁盘)中。在使用页面和 App 路由器自行托管时,此操作会自动执行。
如果要将缓存的页面和数据持久化到持久存储中,或者在 Next.js 应用程序的多个容器或实例之间共享缓存,则可以配置 Next.js 缓存位置。
next.config.js
module.exports = {
cacheHandler: require.resolve('./cache-handler.js'),
cacheMaxMemorySize: 0, // disable default in-memory caching
}
查看自定义缓存处理程序示例,并详细了解实现方法。
API 参考
缓存处理程序可以实现以下方法:get
、set
和 revalidateTag
。
get()
参数 | 类型 | 描述 |
---|---|---|
key | string | 缓存值的键。 |
返回缓存的值,如果未找到则返回 null
。
set()
参数 | 类型 | 描述 |
---|---|---|
key | string | 要将数据存储到的键。 |
data | Data 或 null | 要缓存的数据。 |
ctx | { tags: [] } | 提供的缓存标签。 |
返回 Promise<void>
。
revalidateTag()
参数 | 类型 | 描述 |
---|---|---|
tag | string 或 string[] | 要重新验证的缓存标签。 |
返回 Promise<void>
。详细了解重新验证数据或revalidateTag()
函数。
需要了解
revalidatePath
是缓存标签之上的一个便捷层。调用revalidatePath
将调用你的revalidateTag
函数,然后你可以选择是否要根据路径标记缓存键。
版本历史
版本 | 更改 |
---|---|
v14.1.0 | 重命名为 cacheHandler 并成为稳定版本。 |
v13.4.0 | incrementalCacheHandlerPath 支持 revalidateTag 。 |
v13.4.0 | incrementalCacheHandlerPath 支持独立输出。 |
v12.2.0 | 添加实验性 incrementalCacheHandlerPath 。 |
这有帮助吗?