gzip 不适用于 aws s3 资产

gzip not working for aws s3 assets

我已将 javascript 文件上传到 aws s3 存储桶,并且为了进行 gzip 压缩,我设置了以下元数据。我还制作了文件 public.

Content-Encoding: gzip

已有一个元数据存在

Content-Type: application/x-javascript

从浏览器访问时出错

This webpage is not available ERR_CONTENT_DECODING_FAILED

像这样访问url

https://s3-url.amazonaws.com/bucket-name/assets/js/angular.js

设置 Content-Encoding: gzip 实际上并没有改变您的 object 的内容编码。这用于描述您应用的编码。

在没有对 object 实际应用 gzip 压缩的情况下设置它会导致像您遇到的错误。这是浏览器抱怨你 "claimed"(通过 header)内容实际上是用 gzip 编码的,而实际上它不是。

类似地,上传 gzipped object 而不设置 header 将导致无法下载,因为接收用户代理(浏览器)无法知道如何解码内容,或者它甚至应该尝试。

请注意,当您在计算机上使用 gzip -9 somefile.js 对文件进行 gzip 压缩时,其名称会更改为在末尾添加 .gz,而将其名称保留为 somefile.js.gz。上传前删除 .gz。它不是必需的,当然您也不想更改链接。

上面的 -9 指定 gzip 应该使用最大压缩,这可能是您想要的。