Cloudflare
历史版本
Release 0.3
Caching

缓存机制

@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>",
    },
  ],
}