【发布时间】:2012-02-05 13:23:37
【问题描述】:
当我使用我的 Rails 应用程序通过 Heroku 的 Cedar 堆栈(即不通过 CDN)直接提供我的资产时,它们会自动进行 gzip 压缩。 (请参阅我的previous question,了解我对此感到困惑的原因)
现在,我正在尝试设置 Cloudfront 来提供这些资产,理想情况下,我希望它们也被 gzip 压缩。根据我的阅读,我认为 Cloudfront 会将 Accept 标头传递给我的应用程序,因此如果支持,它们应该提供 gzip 服务(就像您直接请求 heroku 上的资产时一样)。但事实并非如此。资产标题最终看起来像这样:
Age:510
Connection:keep-alive
Content-Length:178045
Content-Type:text/css
Date:Sun, 08 Jan 2012 18:55:13 GMT
Last-Modified:Sun, 08 Jan 2012 18:42:34 GMT
Server:nginx/0.7.67
Via:1.1 varnish, 1.0 7a0b4b3db0cc0d369fe1d6981bfb646a.cloudfront.net:11180 (CloudFront), 1.0 6af08f4042ec142b4b760ca4cd62041d.cloudfront.net:11180 (CloudFront)
X-Amz-Cf-Id:2b205edf4e9ef000a31a0208ca68f4e15b746eb430cde2ba5cc4b7dff4ba41a76c24f43cf498be02,8d5863a42eea452f86831a02f3eb648b26fe07013b08b95950f15ef8ba275822e1eb3b7ed2550d01
X-Cache:Hit from cloudfront
X-Varnish:2130919357
这里没有提到编码,当我查看纯文件时,它不是 gzip'd。所以我想知道我需要在这里做什么才能让 Cloudfront 从我的应用程序请求一个 gzip 版本的资产,以便它可以将其提供给客户端。
This post 说您需要手动 gzip 并上传文件,但我不明白为什么需要这样做。一来烦人,二来不会直接请求和我的浏览器一样的文件吗?那么,为什么它不像我的应用程序中默认那样提供 gzip 文件呢?
任何关于让 gzip'ng 正常工作的提示都会很棒。如果可能的话,我希望不必手动压缩我的文件并上传它们。
【问题讨论】:
标签: encoding heroku gzip cdn amazon-cloudfront