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 应该使用最大压缩,这可能是您想要的。
我已将 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 应该使用最大压缩,这可能是您想要的。