Ruby on rails S3服务于gzip资产。CloudFront没有。为什么?
我为我的静态资产设置了一个AmazonS3存储桶,并将CloudFront配置为指向它。我在Heroku上有一个Rails 4应用程序 当我设置Ruby on rails S3服务于gzip资产。CloudFront没有。为什么?,ruby-on-rails,heroku,amazon-web-services,amazon-s3,amazon-cloudfront,Ruby On Rails,Heroku,Amazon Web Services,Amazon S3,Amazon Cloudfront,我为我的静态资产设置了一个AmazonS3存储桶,并将CloudFront配置为指向它。我在Heroku上有一个Rails 4应用程序 当我设置config.action\u controller.asset\u host=“https://“+Figaro.env.FOG\u目录+”.s3.amazonaws.com“,我就得到了gzip资产 当我设置config.action\u controller.asset\u host=“http://“+Figaro.env.CLOUDFRONT\
config.action\u controller.asset\u host=“https://“+Figaro.env.FOG\u目录+”.s3.amazonaws.com“
,我就得到了gzip资产
当我设置
config.action\u controller.asset\u host=“http://“+Figaro.env.CLOUDFRONT\u目录+”.CLOUDFRONT.net“
”时,我没有得到gzip资产。为什么不呢?更新:
CloudFront现在可以压缩文件,即使源服务器返回未压缩的文件。这仅适用于1KB和10MB之间的设备。我在下面发布的原始链接中提供了完整的详细信息
原始答案: CloudFront本身不执行任何压缩/解压缩。如果S3上有压缩文件,而CloudFront中有未压缩文件,则很可能是缓存问题,因为CloudFront提供的是较旧的未压缩文件版本。尝试在CloudFront上删除这些文件 您可以在此处了解有关CloudFront压缩的更多信息:
这是一个缓存问题。我删除了CloudFront发行版,并创建了一个具有相同S3 bucket和备用域名的新发行版。在部署新分发版并更新DNS记录后,一切正常。谢谢FWIW,这已经改变了。您现在可以启用CF自动压缩一些文件:我有一个类似的问题:我们的资产通过cloudfront位于S3上。如果我只使用url请求资产(在curl中),我会得到最新版本。如果我通过--compressed,我会得到它的一个旧版本:就好像压缩版本(可能是由s3创建的,因为cloudfront不做任何gzip)正在缓存在某个地方,当我通过--compressed时,我得到的是它,而不是新文件。你遇到过这个吗?@MaxWilliams已经好几个月了,但是没有,我不记得遇到过这个。我最终用相同名称的gzip版本替换了我的所有资产,而不是“application.css”和“application.css.gz”,而是“application.css”(重命名的gzip文件)。我的问题是S3配置:它被设置为“自定义缓存选项”由于当时我无法理解的原因,这意味着它没有正确地为压缩的资源提供服务。谢谢回复@麦克斯·威廉姆斯:当然,很高兴你能成功!