橙宝书
CDN 与网站加速

07 · 用白名单思维配置 Cache Rules

先识别身份与写路径,再只允许明确的公开资源进入缓存,并用规则顺序、Trace 与双客户端验证正确性。

编辑与核验:橙宝书编辑团队 ·

CDN · PHASE 3进阶约 26 分钟Cache Rules · Trace · 隐私边界

完成结果

你会得到一组范围清晰、顺序可解释的规则:指纹静态资源可长缓存,选定的公开内容可短缓存,而登录、账号、管理、预览、支付、Webhook 与写请求不会进入共享缓存。

从内容矩阵开始,不从 Cache Everything 开始

内容类别典型路径初始策略发布证据
指纹静态资源/assets/app.abc123.jsEligible,遵循源站头或长 TTLMISS → HIT,版本 URL 可切换
公开内容/blog/*/docs/*仅明确路径 Eligible,短 TTL 起步匿名客户端内容一致,可精准刷新
身份页面/login/account/*BypassCookie、CSRF、登录退出完整
写接口非 GET/HEAD、/api/private/*Bypass请求始终到应用,响应不串用户
管理与预览/admin/*/preview/*Bypass草稿与管理数据不会匿名命中
支付与回调/checkout/*/webhooks/*Bypass签名、幂等和状态更新不受缓存影响

Cache Rules 只作用于 Proxied 主机名。Eligible for cache 表示允许 Cloudflare 尝试缓存,并不保证响应一定存储;源站的 Cache-ControlSet-Cookie、状态码和其他设置仍参与判断。

规则可以叠加,冲突时最后匹配项胜出

flowchart TD
  A[请求进入 Cache Rules 阶段] --> B[规则按顺序匹配]
  B --> C{多个规则命中?}
  C ----> D[应用唯一匹配结果]
  C ----> E[不同设置可组合]
  E --> F[同一设置冲突时最后匹配规则胜出]
  F --> G[用 Cloudflare Trace 确认实际结果]

最稳妥的设计是让公开与敏感条件尽量互斥。确实有重叠时,把宽泛的公开 Eligible 规则放在前面,把更具体的敏感 Bypass 放在后面,使最后匹配结果保持绕过。规则移动后必须重新跑 Trace,因为 Cache Rules 会覆盖相同路径上的旧 Page Rules 缓存设置。

在控制台创建最小策略

保存路径与响应头清单

从路由表、前端 Network、服务端日志和站点地图列出公开、身份、写入、预览和静态资源。不要让 AI 仅根据文件名猜路径性质。

建立公开静态资源规则

在目标 Zone 的 Caching → Cache Rules 选择 Create rule。使用 Hostname 与 URI Path 或 File extension 将范围限制在已确认的静态目录,选择 Eligible for cache。第一版尊重源站缓存头,不要同时改缓存键、查询参数和全部状态码 TTL。

建立敏感绕过规则

为身份、账号、支付、管理、预览、私有 API 和写请求建立 Bypass cache。若它可能与公开规则同时匹配,将其放在后面;更好的做法是在公开规则中排除这些路径,让意图不依赖隐藏顺序。

保存草稿并用 Trace 检查

控制台允许先保存 Draft。对首页、静态资源、登录页、账号页、公开 API 与一个写接口分别使用 Cloudflare Trace,记录命中的规则、最终 Cache eligibility 与规则顺序,再部署到测试主机名。

用匿名与两个账号验证

curl -sS -D - -o /dev/null https://www.example.com/assets/app.abc123.js
curl -sS -D - -o /dev/null https://www.example.com/login

命令只负责无 Cookie 基线。浏览器还要使用匿名会话和两个独立测试账号,验证登录、退出、账号页、表单提交与 CSRF;账号 A 不能看到账号 B 的任何内容。

Bypass 可能显示 DYNAMIC

自定义 Bypass 规则会让请求在请求阶段变为不具备缓存资格,因此响应头可能是 CF-Cache-Status: DYNAMIC,而不是字面上的 BYPASS。以 Trace、规则命中和完整响应头共同判断。

发布门禁

  • 新规则只覆盖列入矩阵的 Hostname 与 URI 范围。
  • 多规则同时匹配时,已确认最后匹配规则不会把敏感路径重新设为 Eligible。
  • 静态资源出现可解释的 MISS → HIT,身份与写路径保持 DYNAMICBYPASS
  • 两个账号分别完成登录、退出、查看与写操作,没有 Cookie、CSRF 或跨用户数据问题。
  • 回滚动作是停用本次规则,而不是删除源站安全头或执行全站清缓存。

已有站点可同时参考更短的登录与 API 安全配方。下一篇将拆开 Edge TTL、Browser TTL 与响应头

官方来源

这篇内容帮你完成目标了吗?

内测反馈只在当前浏览器生成,不会自动上传。

本页目录