Ruby on rails Amazon S3和Cloudfront don';飞行中的t gzip

Ruby on rails Amazon S3和Cloudfront don';飞行中的t gzip,ruby-on-rails,amazon-web-services,caching,amazon-s3,amazon-cloudfront,Ruby On Rails,Amazon Web Services,Caching,Amazon S3,Amazon Cloudfront,我想在Cloudfront中使用新功能,它允许使用Accept编码动态地更新gzip文件:gzip头。我设置了我的CDN发行版,打开了“自动压缩对象”,白名单标题:Origin、Accept-Control-Request标题和Accept-Control-Request方法(我使用的是AngularJS,我需要它作为选项方法)。我的S3桶上没有任何CORS 正如他们的文档中所述,当我向请求添加Accept Encoding:gzip头时,它应该开始工作。然而,我仍然得到原始文件 Respons

我想在Cloudfront中使用新功能,它允许使用Accept编码动态地更新gzip文件:gzip头。我设置了我的CDN发行版,打开了“自动压缩对象”,白名单标题:Origin、Accept-Control-Request标题和Accept-Control-Request方法(我使用的是AngularJS,我需要它作为选项方法)。我的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
我的配置是:

  • 独角兽上带角度的轨道(使用资源同步)
  • Nginx
  • S3和云锋

    • 注意这两个响应头

      Age: 65505
      X-Cache: Hit from cloudfront
      
      此对象是由先前的请求(65505秒)缓存的(≅ 18个小时)在您要求的时间之前

      一旦CloudFront在特定边缘缓存了一个对象,如果稍后配置相关缓存行为以启用动态压缩,CloudFront将不会返回并重新压缩其缓存中的对象。它将继续服务于对象的原始版本,直到它被逐出

      如果这18小时的间隔比您在发行版上启用压缩的时间长,那么这就是您看到的最可能的解释

      CloudFront从您的源位置获取文件时,会压缩每个边缘位置的文件。配置CloudFront压缩内容时,它不会压缩已经位于边缘位置的文件。此外,当一个文件在边缘位置过期并且CloudFront将该文件的另一个请求转发给您的源站时,如果您的源站返回HTTP状态代码304,则CloudFront不会压缩该文件,这意味着边缘位置已经具有该文件的最新版本。如果希望CloudFront压缩已经位于边缘位置的文件,则需要使这些文件无效

      通过提交路径
      *
      (覆盖所有内容)或仅此特定的
      /path
      /path*
      等,从分发版缓存中逐出所有内容。几分钟内,分发版的所有缓存内容(或特定路径匹配,如果未指定
      *
      所有内容)将被逐出(等待失效显示它已完成),并且您应该看到压缩正在处理后续请求

      请注意
      年龄:
      (CloudFront有一份特定响应的副本有多长时间了),一旦它下降,然后重新设置,我可以大胆猜测,您会看到您期望的结果

      如果这不能解决问题,还有另一种可能性,但我认为这是一种相当不寻常的情况:

      在极少数情况下,当CloudFrontEdge位置异常繁忙时,某些文件可能无法压缩


      就这样。鲁普洛德把它拍了下来。谢谢