caching控制在AWS S3对象元数据中不起作用

后续我原来的问题: 没有caching控制标题从AWS CloudFront与S3来源的文件

我使用AWS CloudFront以AWS S3为原点提供静态文件。 我尝试使用AWS Web控制台为我的对象设置Cache-Control标题,如我原始问题(上面的链接)中的答案中所述。 当我使用AWS S3链接访问文件时, 我已经可以看到我添加的标题Cache-Control:public,max-age = 31536000

问题是浏览器不尊重标题。 当我重新加载/刷新相同的链接,我得到一个304 – 未修改的响应,而不是一个200(caching)的响应。

我也尝试了max-age = 300 (没有公开 )的值,并尝试了内部的值,但我总是得到304响应。 我也尝试从S3添加Expires头,但结果相同。

如何让浏览器尊重caching头? 我想利用浏览器caching,并节省使用AWS的成本。

附加说明:我的S3存储桶未设置为静态网站托pipe。 以防万一,这与此有关。

编辑:下面是活的HTTP头

https://cdn.example.com/path/logo.png GET /path/logo.png HTTP/1.1 Host: cdn.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Firefox/45.0 Accept: image/png,image/*;q=0.8,*/*;q=0.5 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate, br Referer: https://www.example.com/ Connection: keep-alive If-Modified-Since: Tue, 12 Apr 2016 10:29:24 GMT If-None-Match: "xxxxxxxxxxxxxxxxxxxxxxxxxxx" HTTP/1.1 304 Not Modified Connection: keep-alive Date: Sat, 16 Apr 2016 09:33:08 GMT Etag: "xxxxxxxxxxxxxxxxxxxxxxx" Server: AmazonS3 Age: 67885 X-Cache: Hit from cloudfront Via: 1.1 xxxxxxxxxxxxxxx.cloudfront.net (CloudFront) X-Amz-Cf-Id: xxxxxxxxxxxxxxxxxxxxxxxxxxxx== 

编辑:我得到200响应,如果我重新加载和304未修改,如果我点击input地址栏url。 此外,同一页面加载中的Google资产将以200(来自caching)而不是304来回应。

更新:

当前正在检测文件已被caching的在线testing。 在http://www.webpagetest.org/和http://tools.pingdom.com/上做了testing。 还有Google Page Speed。 我认为需要时间将文件分发到边缘位置。 这是奇怪的,因为我正在改变文件名称与每一个编辑变化立即发生。 但就caching而言,可能需要时间将caching分发到边缘位置。 还在做更多的testing。

200是ok响应,这意味着服务器已经发送了请求的资源。 304没有修改意味着对象在浏览器caching中,浏览器已经检查。

如果您点击重新加载,则可能会遇到浏览器问题,而不是服务器问题。 你已经告诉它重新加载,所以它到了服务器。 尝试加载该资源,进入url并点击“input”,而不是“重新加载”。

试试Firefox的“live http headers”插件,它显示了一切进行得很顺利。

基于你所说的我不认为有实际的问题,但是你需要从Live HTTP Headers发布输出给我们。 如果你这样做,不要只使用一个资源,加载一个静态的HTML页面,并在CDN引用一个JPG格式。