[英]GZIP Compression on static Amazon S3 files
我想在我的网站上实施GZIP压缩。 我已经在IIS上实现了它,并且HTML 页面按预期成功压缩。
现在问题出在CSS 和我从Amazon S3获得的 JS 文件上。 它们根本没有被压缩。 我也想压缩它们。
请指导我如何去做。 分享它的链接对我帮助很大。
更新:我在 S3 文件上添加了 Meta Header 作为“Content-Encoding:gzip”,现在它显示在 Response header 中。文件大小仍然相同,并且没有影响页面中的特殊 CSS 。 而且我什至无法在浏览器中打开它。 这是特定 css 的 [链接][1]。
谢谢
文件在上传到 Amazon S3之前应该被压缩。
有关一些示例,请参阅:
如果您在 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函数
我为此写了一个 GIST,它可以激发您创建自己的流程。 见https://gist.github.com/psa-jforestier/1c74330df8e0d1fd6028e75e210e5042
并且不要忘记使(=清除)Cloudfront 无效以应用您的更改。
如果您只是想对 S3 存储桶中的现有文件进行 gzip 压缩,您可以为其编写 Lambda function。 将文件读入缓冲区,然后使用 gzip 库压缩它们并重新上传到 S3。 这样的事情应该有效:
gzipped_content = gzip.compress(f_in.read())
destinationbucket.upload_fileobj(io.BytesIO(gzipped_content),
final_file_path,
ExtraArgs={"ContentType": "text/plain"}
)
这里有一个完整的教程: https://medium.com/p/f7bccf0099c9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.