有人可以通过S3来源从Cloudfront提供gzip压缩文件吗?

时间:2014-03-05 11:20:15

标签: amazon-web-services amazon-s3 amazon-cloudfront

我已经从Stackoverflow上的其他帖子中得到了很多关于这个主题的建议,但我仍然没有成功地让它发挥作用。

网站原产地位于S3,通过Cloudfront提供服务。通过其他帖子和亚马逊文档,我看到的建议如下:

1)Gzip必要的文件,从文件名中删除.gz,但在上传时,仍然将meta设置为gzip。这不适合我。 Safari只需下载gzip压缩文件,而不是用作网页。

2)亚马逊文档建议上传文件的gzip压缩版本和非压缩版本,但它没有提及它是如何工作的。例如,您是否链接到网站html中的style.css和style.css.gz?如果是这样,是不是因为看起来有两个请求而不是一个请求而没有打败gzipping的对象以加速网站?

此外,当您设置文档Cloudfront意图检索时,例如index.html,如果你同时拥有一个gzip压缩文件和一个非压缩文件,你将其设置为要检索的文档?当我将文档设置为index.html.gz时,浏览器会再次下载该文件。

我的速度等级在70-80%之间,这可能会更差,但也可能更好。我不是初学者,但我距离成为这方面的专家只有一百万英里,所以我希望我能在这里一步步走过。必须有一些我不太正确的事情。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:5)

该过程应如下所示:

  • 在本地gzip文件(它应该被称为index.html.gz
  • 删除.gz扩展名(文件现在称为index.html但内容已被gzip压缩)
  • 将文件上传到S3
  • 在S3管理控制台中的文件的元数据选项卡中根据文件设置正确的Content-Type
  • Content-Encoding设为gzip

在HTML标记中链接到gzip压缩样式表时,只需指定不带.gz扩展名的名称。

测试配置是否有效的优秀网站是http://gzipwtf.com/

如果您正在尝试使用的文件被缓存,也不要忘记使CloudFront缓存无效。

编辑:

我不建议您手动操作这些东西,我建议您在某种构建过程中自动上传和设置标题的过程。 s3_website是一个很好的Ruby宝石入门,但也有其他命令行工具或Grunt插件可用。