首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Content-Encoding时需要注意的事项: gzip

使用Content-Encoding时需要注意的事项: gzip
EN

Stack Overflow用户
提问于 2012-08-28 23:08:44
回答 2查看 14.6K关注 0票数 11

我已经创建了一个托管在S3存储桶上的静态网站。我的资源文件(css和js文件)是用gzip压缩的。文件名本身是file_gz.jsfile_gz.css,并与Content-Encoding: gzip标头一起提供。

到目前为止,我已经在不同的浏览器上测试了这个网站,它工作得很好。这些资源与它们的压缩版本一起交付,页面看起来也没有什么不同。

我看到的唯一问题是,由于这是一个S3存储桶,当客户端(浏览器)不支持gzip编码时,没有故障保护措施。相反,HTTP请求将失败,并且不会对页面应用样式或javascript增强。

有没有人知道设置Content-Encoding: gzip有什么问题?是否所有浏览器都正确支持此功能?还有没有其他的头文件需要添加才能正常工作?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-28 23:52:23

现代浏览器在很大程度上支持编码的内容。但是,假设所有用户代理都会这样做是不安全的。您的实现的问题在于,它完全忽略了HTTP的内置方法来避免这个问题:内容协商。您有几个选项:

  1. 你可以继续对这个问题视而不见,并希望访问你内容的每个用户代理都能解码你的gzip资源。不幸的是,情况几乎肯定不会是这样;浏览器并不是唯一的用户代理,解决问题的“头在沙子里”的方法很少是一个好的idea.
  2. Implement解决方案,它是协商是否使用Accept-Encoding头提供good响应的解决方案。如果客户端根本没有指定这个头文件,或者指定了它但没有提到gzip,那么您可以相当肯定地说,用户将无法解码gzip格式的响应。在这些情况下,您需要发送未压缩的版本。

内容协商的来龙去脉超出了本答案的范围。您需要研究如何解析Accept-Encoding报头并协商响应的编码。通常,内容编码是通过使用第三方模块来完成的,比如Apache的mod_deflate。虽然我不熟悉S3在这方面的选项,但我怀疑您需要自己实现协商。

总而言之:发送编码的内容而不先通过客户端清除它不是一个非常好的主意。

票数 13
EN

Stack Overflow用户

发布于 2016-01-22 16:33:21

您可以使用CSS / minfied CSS (压缩大小为247kb)。

  • 使用cmd gzip -9 example.css,隐藏文件将类似于example.css.gz 44 kb。将文件重命名为d9>要将文件压缩到压缩桶中,并在属性中单击meta-data.

  • Add

meta-

  • S3,选择Context-Encoding和value,您的CSS将被压缩并压缩。

来源:http://www.rightbrainnetworks.com/blog/serving-compressed-gzipped-static-files-from-amazon-s3-or-cloudfront/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12162273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档