【问题标题】:difference between request header cache policy and response header请求头缓存策略和响应头的区别
【发布时间】:2013-08-22 16:37:02
【问题描述】:

我在 AWS 上托管了一些 js。我想缓存它以不为 304 GET 请求支付额外费用,但我很困惑为什么两个标头不同。

Request Method:GET
Status Code:304 Not Modified

helper.js 的请求头

Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
If-Modified-Since:Tue, 20 Aug 2013 13:08:13 GMT

和响应头

Age:4348
Cache-Control:max-age=604800
Connection:keep-alive

为什么它们不同?这是否意味着 Cache-Control 是错误的?我使用 Chrome 控制台获取标题。

【问题讨论】:

  • 我有点困惑。您是否在问为什么即使您在客户端发送了 Cache-Control 标头,服务器也以不同的 Cache-Control 标头响应?我猜你预计会发生这种情况?
  • 基本上,我希望我的js被缓存,这两个有不同的缓存控制是什么意思

标签: http caching amazon-web-services header amazon-s3


【解决方案1】:

我不认为 Cache-Control 是错误的,而且您的内容似乎已经被缓存了。从请求标头中,我了解到第一个请求是在 Tue, 20 Aug 2013 13:08:13 GMT 完成的,因为浏览器指示服务器“嘿,从那时起内容有变化吗?”。作为回报,服务器以304 Not Modified 标头响应,表明内容没有被更改,它应该被缓存604800 秒,直到重新验证它。请记住,缓存是在服务器端完成的。因此,您可能想查看 js 文件上的服务器定义。通常,在部署环境中,我会指示我的网络服务器为 *.js *.png 等发送缓存头。在配置了用于发送缓存头的网络服务器之后,剩下的就是浏览器的工作了。在这种情况下,您的浏览器会按预期工作。

您可以查看RFC2616 以获取 304 响应。您可能还想查看this decent caching tutorial。它应该清除一些想法。

【讨论】:

    【解决方案2】:

    问题出在 Chrome 上。如果你按刷新按钮,它会使缓存失效,但如果你在地址栏中按 Enter,它会从缓存中获取资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      相关资源
      最近更新 更多