Chrome 的缓存是否支持 HTTP Vary 标头?对于特定的 url 请求,服务器响应两个不同的 html 文件,具体取决于它是否是 ajax 请求。所以我将 Vary 标头添加到 X-Requested-With 中。我期待 Chrome 记录两个缓存条目,但似乎并非如此。我总是收到我提出的第一个请求的缓存命中。这是正常行为吗?
谢谢。
Chrome 的缓存是否支持 HTTP Vary 标头?对于特定的 url 请求,服务器响应两个不同的 html 文件,具体取决于它是否是 ajax 请求。所以我将 Vary 标头添加到 X-Requested-With 中。我期待 Chrome 记录两个缓存条目,但似乎并非如此。我总是收到我提出的第一个请求的缓存命中。这是正常行为吗?
谢谢。
作为记录。我无法在 Chrome 中将 HTTP Vary 标头与 X-Requested-With 一起使用。Chrome 在缓存时没有考虑 HTTP Vary 标头。所以缓存命中总是返回相同的内容。
作为一种解决方法,我仅在使用 ajax 进行请求时添加了一个问题字符串(如 ?ajax=1)。
例如: http://localhost/myrequest.php http://localhost/myrequest.php?ajax=1
这样,Chrome 存储了两个缓存条目,一个带有 ajax,一个没有。
这似乎是 Chrome 中的一个错误。当使用 Vary 标头计算其缓存键时,Chrome 似乎执行了区分大小写的查找,这不起作用,因为它以小写形式存储标头。
在您的示例中,Chrome 正在寻找 X-Requested-With。如果您更改 x-requested-with 的 Vary 标头的值,它应该可以工作。
编辑:我实际上弄错了。也许我睡眠不足。使用小写的标题名称也不起作用。对于那个很抱歉。