自定义 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
缓存处理程序可以实现以下方法:get
、set
和 revalidateTag
。
¥The cache handler can implement the following methods: get
, set
, and revalidateTag
.
get()
范围 | 类型 | 描述 |
---|---|---|
key | string | 缓存值的键。 |
返回缓存的值,如果未找到则返回 null
。
¥Returns the cached value or null
if not found.
set()
范围 | 类型 | 描述 |
---|---|---|
key | string | 存储数据的键。 |
data | 数据或 null | 要缓存的数据。 |
ctx | { tags: [] } | 提供的缓存标签。 |
返回 Promise<void>
。
¥Returns Promise<void>
.
revalidateTag()
范围 | 类型 | 描述 |
---|---|---|
tag | string 或 string[] | 要重新验证的缓存标签。 |
返回 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. CallingrevalidatePath
will call yourrevalidateTag
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.0 | incrementalCacheHandlerPath 支持 revalidateTag 。 |
v13.4.0 | incrementalCacheHandlerPath 支持独立输出。 |
v12.2.0 | 添加了实验性 incrementalCacheHandlerPath 。 |