Cache Response Rules 允许您根据请求和响应属性配置缓存设置。这些规则在 http_response_cache_settings 阶段缓存之前执行,该阶段在 Cloudflare 收到源站响应之后运行。
使用 Cache Response Rules 您可以:
- 修改源站发送的
Cache-Control指令。 - 修改响应上的缓存标签以进行有针对性的缓存清除。
- 在缓存之前从源站响应中剥离标头(
ETag、Set-Cookie、Last-Modified)。
Cache Response Rules 适用于来自源站的缓存和非缓存(动态)响应。例如,您可以从不符合缓存条件的响应中剥离 Set-Cookie 标头。
Cache Response Rules 可以在仪表板、通过 API 或 Terraform 创建。
下表描述各计划的 Cache Response Rules 可用性。
| Free | Pro | Business | Enterprise | |
|---|---|---|---|---|
Availability | Yes | Yes | Yes | Yes |
Number of rules | 10 | 25 | 50 | 300 |
排查 Cache Response Rules 时,使用 Cloudflare Trace 判断某条规则是否对特定 URL 生效。
Cache Response Rules 在源站响应上操作,而 Cache Rules 在传入请求上操作。当两种规则类型的设置冲突时,Cache Response Rules 优先。
主要区别:
- 缓存资格:Cache Rules 仍然是决定内容是否符合缓存条件的唯一机制。但是,Cache Response Rules 可以使用
set_cache_control操作设置no-store指令使可缓存资源不可缓存。 - Origin Cache Control (OCC):如果
http_response_cache_settings阶段中的任何规则匹配,Cloudflare 默认为 Origin Cache Control 行为(origin_cache_control = true)。 - CDN-Cache-Control 优先级:Cache Response Rules 设置的
Cache-Control指令优先于源站设置的Cloudflare-CDN-Cache-Control和CDN-Cache-Control标头。有关更多信息,请参阅 CDN-Cache-Control 标头优先级。 - 堆叠:Cache Response Rules 与 Cache Rules 以相同方式堆叠。当多个规则指定相同设置时,最后匹配的规则获胜。
考虑以下场景:
- Cache Rule 将 Edge TTL 设置为
override_origin,值为7200秒(2 小时)。 - Cache Response Rule 使用
set_cache_control设置s-maxage为3600秒(1 小时),并启用cloudflare_only。 - 源站响应
Cache-Control: s-maxage=600。
在这种情况下,Cache Response Rule 优先。Cloudflare 根据 Cache Response Rule 设置的 s-maxage 指令将资源缓存 3600 秒(1 小时),而访问者仍然收到源站的原始 s-maxage=600,因为启用了 cloudflare_only。
Workers 和响应标头 Transform Rules 在做出缓存决定之后执行,无法影响响应是否或如何被缓存。只有 Cache Response Rules 可以根据源站响应标头修改缓存行为。
如果您需要覆盖来自源站的 Cache-Control 指令(例如,移除 private 或添加 s-maxage),请使用 Cache Response Rule——而非 Worker 或 Transform Rule。
- 如果您剥离 last modified,Smart Edge Revalidation 将被关闭。
- Cache Response Rules 忽略
1xxHTTP 响应状态码,因为它们被视为信息性响应。 - Cache Response Rules 可以进行版本管理。有关更多信息,请参阅 Version Management 文档。