Skip to main content

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

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

¥Caching and revalidating pages (with Incremental Static Regeneration) use the same shared cache. When deploying to Vercel, the ISR cache is automatically persisted to durable storage.

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

¥When self-hosting, the ISR cache is stored to the filesystem (on disk) on your Next.js server. This works automatically when self-hosting using both the Pages and App Router.

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

¥You can configure the Next.js cache location if you want to persist cached pages and data to durable storage, or share the cache across multiple containers or instances of your Next.js application.

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

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

¥View an example of a custom cache handler and learn more about implementation.

API 参考

¥API Reference

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

¥The cache handler can implement the following methods: get, set, and revalidateTag.

get()

范围类型描述
keystring缓存值的键。

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

¥Returns the cached value or null if not found.

set()

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

返回 Promise<void>

¥Returns Promise<void>.

revalidateTag()

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

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

¥Returns Promise<void>. Learn more about revalidating data or the revalidateTag() function.

很高兴知道:

¥Good to know:

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

    ¥revalidatePath is a convenience layer on top of cache tags. Calling revalidatePath will call your revalidateTag function, which you can then choose if you want to tag cache keys based on the path.

版本历史

¥Version History

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