Skip to main content

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

在 Next.js 中,页面和应用路由的 默认缓存处理程序 使用文件系统缓存。这不需要配置,但是,你可以使用 next.config.js 中的 cacheHandler 字段自定义缓存处理程序。

¥In Next.js, the default cache handler for the Pages and App Router uses the filesystem cache. This requires no configuration, however, you can customize the cache handler by using the cacheHandler field in next.config.js.

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()

范围类型描述
tagstring要重新验证的缓存标记。

返回 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(实验性)。