Mar*_*zyk 2 caching ruby-on-rails amazon-s3 amazon-web-services amazon-cloudfront
我想使用 Cloudfront 中的新功能,该功能允许使用Accept-Encoding: gzip header即时 gzip 文件。我设置了 CDN 分发,打开“自动压缩对象”,将标头列入白名单:Origin、Accept-Control-Request-Headers 和 Accept-Control-Request-Method(我使用的是 AngularJS,我需要它用于 OPTIONS 方法)。我的 S3 存储桶上没有设置任何 CORS。
正如他们的文档中所述,当我将Accept-Encoding: gzip标头添加到请求中时,它应该开始工作。但是,我仍然收到原始文件。
Response Headers
Accept-Ranges:bytes
Age:65505
Cache-Control:public, max-age=31557600
Connection:keep-alive
Content-Length:408016
Content-Type:text/css
Date:Mon, 21 Mar 2016 16:00:36 GMT
ETag:"5a04faf838d5165f24ebcba54eb5fbac"
Expires:Tue, 21 Mar 2017 21:59:21 GMT
Last-Modified:Mon, 21 Mar 2016 15:59:22 GMT
Server:AmazonS3
Via:1.1 0e6067b46ed4b3e688f898d03e5c1c67.cloudfront.net (CloudFront)
X-Amz-Cf-Id:gKYTTq0cIcUvHTtlrdMig8D1R2ZVdea4EnflV0-IxhtaxgRvLYj6LQ==
X-Cache:Hit from cloudfront
Request Headers
Accept:text/css,*/*;q=0.1
Accept-Encoding:gzip, deflate, sdch
Accept-Language:pl,en-US;q=0.8,en;q=0.6
Cache-Control:max-age=0
Connection:keep-alive
Host: XXX.cloudfront.net
Referer: XXX
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36
Run Code Online (Sandbox Code Playgroud)
我的配置是:
请注意这两个响应标头。
\n\nAge: 65505\nX-Cache: Hit from cloudfront\nRun Code Online (Sandbox Code Playgroud)\n\n该对象已被之前的请求缓存,即您在此特定时间请求之前 65,505 秒(\xe2\x89\x85 18 小时)。
\n\n一旦 CloudFront 在特定边缘缓存了对象,如果您稍后配置相关缓存行为以启用动态压缩,CloudFront 将不会返回并重新压缩其缓存中已有的对象。它将继续提供对象的原始版本,直到它被驱逐。
\n\n如果这个 18 小时间隔早于您在发行版上启用压缩的时间,那么这最有可能解释您所看到的情况。
\n\n\n\n\n当 CloudFront 从您的源获取文件时,会压缩每个边缘位置中的文件。当您配置 CloudFront 来压缩内容时,它不会压缩已位于边缘位置的文件。此外,当边缘站点中的某个文件过期并且 CloudFront 将该文件的另一个请求转发到您的源时,如果您的源返回 HTTP 状态代码 304(这意味着边缘站点已具有该文件),则 CloudFront 不会压缩该文件。文件的最新版本。如果您希望 CloudFront 压缩已位于边缘位置的文件,则需要使这些文件失效。
\n\nhttp://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html
\n
通过提交路径的无效请求(以覆盖所有内容)或仅此特定的 或 等,从您的发行版缓存中逐出所有内容*。/path几分钟/path*之内,您的发行版的所有缓存内容(或特定路径匹配,如果你没有指定*所有内容)将被驱逐(等待失效以表明它已完成),你应该看到压缩对后续请求起作用。
密切关注Age:(CloudFront 拥有特定响应副本的时间),一旦它消失然后重置,我大胆猜测您会看到您所期望的内容。
如果这不能解决问题,还有另一种可能性,但我希望这是一个相当不寻常的情况:
\n\n\n\n在极少数情况下,当 CloudFront 边缘站点异常繁忙时,某些文件可能无法压缩。
\n\nhttp://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html
\n
| 归档时间: |
|
| 查看次数: |
1445 次 |
| 最近记录: |