【问题标题】:S3 serves gzipped assets. CloudFront does not. Why?S3 提供压缩后的资产。 CloudFront 没有。为什么?
【发布时间】:2013-09-18 14:23:31
【问题描述】:

我为我的静态资产设置了一个 Amazon S3 存储桶,并将 CloudFront 配置为指向它。我在 Heroku 上有一个 Rails 4 应用程序。

当我设置config.action_controller.asset_host = "https://" + Figaro.env.FOG_DIRECTORY + ".s3.amazonaws.com" 时,我会得到压缩的资产。

当我设置 config.action_controller.asset_host = "http://" + Figaro.env.CLOUDFRONT_DIRECTORY + ".cloudfront.net" 时,我没有得到 gzipped 资产。为什么不呢?

【问题讨论】:

  • 我有一个类似的问题:我们的资产通过云端在 S3 上。如果我只使用 url 请求资产(在 curl 中),我会得到最新版本。如果我通过 --compressed,我会得到它的旧版本:就好像压缩版本(可能由 s3 创建,因为 cloudfront 不做任何 gzipping)被缓存在某个地方,当我通过 --compressed 我明白了,而不是新文件。你遇到过这种情况吗?
  • @MaxWilliams 已经几个月了,但不,我不记得遇到过这个。我最终用同名的 gzip 版本替换了我所有的资产——而不是“application.css”和“application.css.gz”,我有“application.css”(一个重命名的 gzip 文件)。
  • 我的问题原来是 S3 配置:它被设置为“自定义缓存选项”,由于目前我无法理解的原因,这意味着它没有正确地提供压缩资源。感谢回复!
  • @MaxWilliams 当然,很高兴你成功了!

标签: ruby-on-rails heroku amazon-web-services amazon-s3 amazon-cloudfront


【解决方案1】:

更新:

即使源服务器返回未压缩的文件,CloudFront 现在也可以压缩文件。这仅适用于 1KB 到 10MB 之间的 specific file types。我在下面发布的原始链接中提供了完整的详细信息。


原始答案:

CloudFront 不会自行执行任何压缩/解压缩。如果您在 S3 上有压缩文件,在 CloudFront 中有未压缩文件,则很可能是缓存问题,CloudFront 提供了较旧的未压缩版本的文件。尝试invalidate CloudFront 上的这些文件。

您可以在此处了解有关 CloudFront 压缩的更多信息:

http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html

【讨论】:

  • 这是一个缓存问题。我删除了 CloudFront 分配并创建了一个具有相同 S3 存储桶和备用域名的新分配。在我部署了新发行版并更新了我的 DNS 记录后,一切正常。谢谢!
  • FWIW,这已经被改变了。您现在可以启用 CF 自动压缩某些文件:docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…
猜你喜欢
  • 2015-07-25
  • 2011-12-26
  • 2015-03-28
  • 2018-06-25
  • 2017-07-13
  • 2016-05-22
  • 1970-01-01
  • 1970-01-01
  • 2021-09-20
相关资源
最近更新 更多