产品Simon Willison·原文 2026年9月24日本站收录 2026年9月28日

Cloudflare开始支持Vary响应头,HTTP内容协商终于可以缓存

Simon Willison评论称,Cloudflare多年来一直忽略图片之外请求的Vary头,导致按Accept头返回HTML或JSON的网站无法安全使用其缓存;现在这一限制被解除,但他本人仍偏好用 .json后缀这类可预测URL。

AI解读:Cloudflare补上了HTTP缓存里一个长期被忽略的环节:Vary响应头。简单说,Vary让缓存服务器知道,同一个URL对不同请求头(比如Accept)应该返回不同内容,不能一概而论。

在此之前,Cloudflare对图片之外的资源基本不看Vary头。如果网站按Accept头给浏览器返回HTML、给程序返回JSON,缓存可能把JSON版本误发给期待HTML的用户,所以很多开发者干脆不敢在Cloudflare后面用这种写法。

Simon Willison说这个功能他等了好几年,但他自己也选择绕开内容协商:给应用加 .json后缀,让同一个URL稳定只返回一种格式。对正在用Accept协商的团队,这条更新直接去掉了一个缓存安全隐患;对已经用后缀方案的团队,不必要立刻改架构。

Simon Willison在评论Cloudflare新上线的Vary响应头支持时表示,他等这个功能已经等了好几年。

他描述的问题是:如果网站根据用户代理发送的Accept: text/html返回HTML,对不带这个头的请求返回JSON或其他格式,这类内容协商在过去无法部署在Cloudflare缓存后面。

原因是Cloudflare此前对图片之外的资源忽略Vary头,缓存系统可能把JSON版本缓存下来,再把它返回给期待HTML的用户。

Willison补充说,即便与Cloudflare这项功能无关,他本人也决定永远不用这种模式,因为他更偏好让URL可预测地返回HTML或JSON——他的做法是给应用加 .json后缀来提供JSON。

这条消息的依据是Simon Willison的个人评论摘要,没有披露Cloudflare官方文档或具体上线时间等更多细节。

信息来源

Simon Willison原始来源