Cloudflare 支持 Vary,缓存命中率要从正确区分请求开始
据 Cloudflare 官方博客,Cache Rules 已向全部套餐提供 Vary 支持,允许站点按请求头配置归一化、原样匹配或绕过缓存。
作者:林岚|OC 开发者生态编辑
据 Cloudflare 官方博客,Cache Rules 已向全部套餐提供 Vary 支持,允许站点按请求头配置归一化、原样匹配或绕过缓存。
一句话结论:把同一 URL 的不同响应分清楚,才谈得上让缓存更高效。
同一个地址可能返回中文或英文,也可能返回网页或 JSON。HTTP 缓存不能只记住 URL,就认定后来的请求都该收到同一份内容。RFC 9111 为 Vary 定义的作用,正是让缓存把相关请求字段纳入响应选择。
可是一味增加区分维度,也会让缓存几乎无法复用。比如两个不同的语言偏好字符串,最终都被源站映射到英文页面;如果缓存把字符串逐字当成不同身份,就可能为相同内容维护许多冷门副本。这是正确性与效率相互牵制的地方。

Cloudflare 的新设置让站点决定哪些差异值得保留。normalize 适合可控的内容协商;passthrough 保留精确差异;遇到个性化或难以控制的字段,则可以选择 bypass。对接受格式和语言等字段,归一化也会影响送到源站的请求,避免缓存和源站各自理解一套内容身份。
配置不能只看命中率。官方说明,语言归一化可能丢失某些 q=0 排除语义,需要这些语义的源站应采用原样处理。另外,改规则不会自动清除已有缓存。
一个适合验收的例子是:准备两组应该收到同一语言的请求,再准备一组必须不同的请求。先确认前两组确实复用、后一组确实隔离,最后再观察回源量。这样优化出来的命中率才有意义。
关键事实
- 来源:Cloudflare 公告与 HTTP 缓存标准。
- 范围:Free、Pro、Business、Enterprise 套餐。
- 限制:Vary: * 绕过缓存;规则变化不会自动清除旧内容。
OC 判断
缓存配置是在定义哪些请求可以共享答案。把个性化内容混在一起可能造成信息暴露,把本来相同的内容过度拆分则浪费容量。站点应先列出真实响应种类,再决定请求字段怎么归并。
为什么重要
- 对开发者:同步核对源站协商逻辑和缓存规则。
- 对企业:性能验收应同时检查错误语言、错误格式与个人化响应。
- 对用户:更快的页面仍必须是为当前请求准备的页面。
评论
围绕这篇文章补充信息、提出问题或分享观察。