静态Amazon S3文件上的GZIP压缩

RaJ*_*iJo 6 iis gzip amazon-s3

我想在我的网站上实施GZIP压缩.我已经实现了它在IISHTML页面被成功压缩预期.

现在的问题是CSS和JS文件,我从Amazon S3获得.他们根本没有被压缩.我也想压缩它们.

请指导我怎么做.分享它的链接对我有很大帮助.

更新:我已经将S3文件上的Meta Header添加为"Content-Encoding:gzip",现在它在Response头中显示.文件大小仍然相同,并且页面中的特定CSS没有任何影响.我甚至无法在浏览器中打开它.这是特定css的[link] [1].

谢谢

Joh*_*ein 10

文件应上传到Amazon S3 之前进行压缩.

有关示例,请参阅:

  • 此解决方案现已过期。自 [12 月 2015 年,Cloudfront 现在可以在出路时压缩文件](http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html)。 (2认同)
  • 除非您向存储桶添加 CORS 配置以公开 Content-Length 标头,否则 Cloudfront 不会压缩 S3 文件。有关详细信息,请参阅 http://ithoughthecamewithyou.com/post/enable-gzip-compression-for-amazon-s3-hosted-website-in-cloudfront。 (2认同)

Jay*_*ore 7

如果您在 S3 存储桶前面使用 CloudFront,则无需手动压缩 HTML 资源(CloudFront 会即时压缩它们)。请注意 CloudFront 仅在 gzip(无 deflate、brotli)和 CSS/JS/HTML(基于内容类型)中压缩。请参阅https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/ServingCompressedFiles.html#compressed-content-cloudfront-file-types。要使其正常工作,您必须将一些 http 标头从 CloudFront 转发到 S3(请参阅文档)。

如果您的 S3 存储桶包含 Cloudfront 不支持的资源(通用“二进制/八位字节流”mime 类型,如“hdr”纹理或“nds”ROM),则您需要在上传到 S3 之前自行压缩它们,然后设置“内容编码”资源上的 http 元。请注意,只有支持 gz 编码的浏览器才能下载和解压缩文件。

如果不想手动一一压缩文件,可以使用Lambda函数

  • 在存储桶中对象(文件)的每个 PUT 上触发
  • 如果文件尚未压缩并且压缩有用,则将原始上传的文件替换为压缩版本
  • 将 http 标头内容编码设置为 gzip

我为此写了一个 GIST,它可以激发您创建自己的流程。见https://gist.github.com/psa-jforestier/1c74330df8e0d1fd6028e75e210e5042

并且不要忘记使(=清除)Cloudfront 无效以应用您的更改。