Cloudflare Workers Cache 上线教程:入口分层、租户隔离、TTL 与回源怎么验收

Workers Cache 可以在 Worker 前直接命中缓存,但认证网关、租户数据和错误响应不能一起缓存。上线前要先拆入口,再核对 cache key、TTL、清除和回滚。

Workers Cache 可以在 Worker 前直接命中缓存,但认证网关、租户数据和错误响应不能一起缓存。上线前要先拆入口,再核对 cache key、TTL、清除和回滚。

  1. 01先读摘要,判断是否与你的场景相关。
  2. 02再看来源,保留继续查证的路径。
  3. 03最后看步骤、风险和可复用动作。

Workers Cache 放在 Worker 入口前,命中时连 Worker 代码都不运行。它能省掉计算和回源,也会放大配置错误:把认证入口缓存、把租户响应混在一起、把 500 缓存太久,都会比普通 Cache API 更难察觉。上线前要先拆入口,不能只加一行配置。

更新依据与能力边界

更新日期:2026-07-15。Cloudflare 7 月 6 日发布 Workers Cache,说明所有计划可用,可通过 Wrangler 配置开启,并用标准 Cache-Control 控制响应。它覆盖默认 export、命名 WorkerEntrypoint、service binding 调用和 ctx.exports 调用。服务绑定里的 ctx.props 会进入缓存键,用于区分租户或用户上下文。

适用场景

  • 公开 API、渲染结果、配置查询或计算昂贵但短期稳定的响应。
  • 一个 Worker 内有多个 entrypoint,希望只缓存其中的读取层。
  • service binding 之间重复调用同一个只读结果。
  • 已有清晰 Cache-Control、清除和监控策略。

不适用场景

  • 登录、鉴权、支付、写入、一次性 token、用户私密数据入口。
  • 响应依赖 Cookie、Authorization 或其他未进入缓存键的上下文。
  • 无法接受短时间旧数据,也没有 purge 或版本化 key。
  • 团队还分不清 Workers Cache、fetch 缓存和 Cache API 的作用位置。

上线前准备

  • 画出入口图:default export、命名 entrypoint、service binding、ctx.exports 和源站。
  • 标记每个入口是否认证、是否写数据、是否包含租户或用户内容。
  • 为可缓存响应确定 TTL、stale 策略、错误状态和 purge 方式。
  • 准备命中与未命中测试、两个租户测试、回滚配置和基线延迟。

上线步骤

  1. 只选择纯读取 entrypoint。认证、路由和规范化网关保持不缓存,让它每次都运行。
  2. 在 wrangler.jsonc 或对应配置中为目标 export 开启 cache。不要一次打开所有入口。
  3. 在响应上设置 Cache-Control。公开稳定数据可给短 TTL 起步;用户或租户数据需要明确 private/no-store 或可靠隔离。
  4. 构造两次相同请求验证 MISS 到 HIT,再改变路径、query 和租户 ctx.props,确认不该共用的响应不会命中同一对象。
  5. 测试 200、404、429、500。错误状态不要继承过长 TTL,尤其是后端短暂故障。
  6. 上线 5% 流量,监控 Worker invocation、回源、P50/P95、错误率和数据新鲜度,再逐步扩大。
{
  "exports": {
    "default": { "cache": { "enabled": false } },
    "publicCatalog": { "cache": { "enabled": true } }
  }
}

Cache-Control: public, max-age=60

配置形状应以当前 Cloudflare 文档和 Wrangler schema 为准。示例表达的是“网关不缓存、公开读取入口缓存”的分层思路,不应盲贴到生产。

可复用示例:多租户内容摘要

一个网关先验证租户 token,再通过 service binding 调用 summary entrypoint。网关每次运行,summary 结果按路径、query 和 ctx.props 中的 tenantId 隔离。测试时用 tenant-a 与 tenant-b 请求相同文档 ID,响应必须各自命中,不能串数据。若业务代码没有把租户信息放进受支持的上下文,先不要缓存。

验收清单

  • 认证网关始终执行,没有被缓存跳过。
  • 相同公开请求能从 MISS 变为 HIT。
  • 不同租户、用户、语言和权限不会误用同一响应。
  • 404、429、500 的 TTL 已单独验证。
  • 内容更新后能 purge、变更 key 或等待可接受 TTL。
  • 回滚只需关闭对应 export 的 cache 并重新部署。
  • 监控能看到命中率、回源量、错误和新鲜度投诉。

常见坑与排错

  • 把 Cache API 的经验直接套到 Workers Cache。二者所在位置不同,命中后是否执行 Worker 也不同。
  • 只测同一租户。隔离问题往往要用两个账户、两种权限才能发现。
  • 用很长 TTL 掩盖源站慢。先从 30 至 60 秒起步,确认清除和新鲜度再放大。
  • 缓存突然不命中:检查方法、状态码、Cache-Control、query、ctx.props 和 entrypoint 名称。
  • 数据串租户:立即关闭该入口缓存,清除缓存,再审计上下文和缓存键。

判断规则

  • 如果响应包含用户、组织或权限差异,而这些差异没有可靠进入缓存键,设置 no-store,不上线缓存。
  • 如果源站 P95 明显下降但新鲜度投诉增加,先缩短 TTL,不用继续提高命中率。
  • 如果 404 和 500 会快速恢复,错误 TTL 设得比成功响应短;无法确认时不缓存错误。
  • 如果发现租户串数据,立即关闭对应 export、清除缓存并按数据事件审计,不能只改 key 后继续运行。

发布后复查

上线 1 小时看错误和串租户迹象,24 小时看命中与回源,7 天看内容新鲜度。每次增加 Cookie、权限、租户字段或新的 service binding,都重新跑隔离测试。缓存收益可以慢慢调,数据边界错了就必须先停。

公开来源

  1. Cloudflare Workers Cache launch
  2. Cloudflare Workers and Cache documentation

订阅更新

输入邮箱,订阅站点更新。

参与讨论

你的邮箱不会公开。 标有 * 的为必填项。