我已经创建了一个托管在S3存储桶上的静态网站。我的资源文件(css和js文件)是用gzip压缩的。文件名本身是file_gz.js或file_gz.css,并与Content-Encoding: gzip标头一起提供。
到目前为止,我已经在不同的浏览器上测试了这个网站,它工作得很好。这些资源与它们的压缩版本一起交付,页面看起来也没有什么不同。
我看到的唯一问题是,由于这是一个S3存储桶,当客户端(浏览器)不支持gzip编码时,没有故障保护措施。相反,HTTP请求将失败,并且不会对页面应用样式或javascript增强。
有没有人知道设置Content-Encoding: gzip有什么问题?是否所有浏览器都正确支持此功能?还有没有其他的头文件需要添加才能正常工作?
发布于 2012-08-28 23:52:23
现代浏览器在很大程度上支持编码的内容。但是,假设所有用户代理都会这样做是不安全的。您的实现的问题在于,它完全忽略了HTTP的内置方法来避免这个问题:内容协商。您有几个选项:
Accept-Encoding头提供good响应的解决方案。如果客户端根本没有指定这个头文件,或者指定了它但没有提到gzip,那么您可以相当肯定地说,用户将无法解码gzip格式的响应。在这些情况下,您需要发送未压缩的版本。内容协商的来龙去脉超出了本答案的范围。您需要研究如何解析Accept-Encoding报头并协商响应的编码。通常,内容编码是通过使用第三方模块来完成的,比如Apache的mod_deflate。虽然我不熟悉S3在这方面的选项,但我怀疑您需要自己实现协商。
总而言之:发送编码的内容而不先通过客户端清除它不是一个非常好的主意。
发布于 2016-01-22 16:33:21
您可以使用CSS / minfied CSS (压缩大小为247kb)。
gzip -9 example.css,隐藏文件将类似于example.css.gz 44 kb。将文件重命名为d9>要将文件压缩到压缩桶中,并在属性中单击meta-data.
meta-
Context-Encoding和value,您的CSS将被压缩并压缩。来源:http://www.rightbrainnetworks.com/blog/serving-compressed-gzipped-static-files-from-amazon-s3-or-cloudfront/
https://stackoverflow.com/questions/12162273
复制相似问题