【问题标题】:Does Chrome support the HTTP Vary headerChrome 是否支持 HTTP Vary 标头
【发布时间】:2017-07-20 05:41:41
【问题描述】:

Chrome 的缓存是否支持 HTTP Vary 标头?对于特定的 url 请求,服务器响应两个不同的 html 文件,具体取决于它是否是 ajax 请求。所以我将 Vary 标头添加到 X-Requested-With 中。我期待 Chrome 记录两个缓存条目,但似乎并非如此。我总是收到我提出的第一个请求的缓存命中。这是正常现象吗?

谢谢。

【问题讨论】:

  • 您能向我们展示具体请求的示例吗?您可以使用 Chrome 开发工具 export network data
  • 您能否向我们展示两个请求的请求/响应标头(有和没有X-Request-With 标头)?

标签: google-chrome http-headers xmlhttprequest browser-cache vary


【解决方案1】:

这似乎是 Chrome 中的一个错误。当使用 Vary 标头来计算其缓存键时,Chrome 似乎执行了区分大小写的查找,这不起作用,因为它以小写形式存储标头。

在您的示例中,Chrome 正在寻找 X-Requested-With。如果您更改 x-requested-with 的 Vary 标头的值,它应该可以工作。

编辑: 我其实是误会了。也许我睡眠不足。使用小写的标题名称也不起作用。对此感到抱歉。

【讨论】:

    【解决方案2】:

    为了记录。我无法在 Chrome 中将 HTTP Vary 标头与 X-Requested-With 一起使用。 Chrome 在缓存时没有考虑 HTTP Vary 标头。所以缓存命中总是返回相同的内容。

    作为一种解决方法,我仅在使用 ajax 执行请求时添加了一个问题字符串(如 ?ajax=1)。

    例如: http://localhost/myrequest.php http://localhost/myrequest.php?ajax=1

    这样,Chrome 存储了两个缓存条目,一个带有 ajax,一个没有。

    【讨论】:

      猜你喜欢
      • 2011-11-27
      • 2010-12-30
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2014-09-30
      • 2011-10-23
      • 1970-01-01
      相关资源
      最近更新 更多