缓存机制
@opennextjs/cloudflare
支持 Next.js 缓存功能 (opens in a new tab)。
默认情况下,Next.js 应用中所有的 fetch()
子请求都会被缓存。如需禁用单个子请求或整个路由的缓存,请参考 Next.js 官方文档 (opens in a new tab)。
缓存数据会跨部署持久化 (opens in a new tab)。您需要自行负责缓存的重新验证和清除。
请注意目前暂不支持 数据重新验证 (opens in a new tab)功能。
Next.js 会在构建时预填充缓存。这些构建时的缓存值由 Workers Assets (opens in a new tab) 提供服务。
💡
Workers KV 采用最终一致性模型,这意味着当使用默认的 60 秒 TTL 时,更新可能需要最多 60 秒才能在全球范围内生效。
如何启用缓存
@opennextjs/cloudflare
使用 Workers KV (opens in a new tab) 作为 Next.js 应用的缓存层。Workers KV 具有高性能 (opens in a new tab)特性,并利用 Cloudflare 的分层缓存 (opens in a new tab)来提高缓存命中率。当您向 Workers KV 写入缓存数据时,这些数据会被存储到能被全球任何 Cloudflare 节点读取的位置。这意味着您的应用可以获取数据、将其缓存到 KV 中,随后来自世界各地的请求都能从该缓存中读取。
要启用缓存功能,您需要:
1. 创建 KV 命名空间
npx wrangler@latest kv namespace create <YOUR_NAMESPACE_NAME>
2. 将 KV 命名空间添加到你的 Worker
应用中 Worker 使用的绑定名称为 NEXT_CACHE_WORKERS_KV
。
// wrangler.json
{
// ...
"kv_namespaces": [
{
"binding": "NEXT_CACHE_WORKERS_KV",
"id": "<BINDING_ID>",
},
],
}