【问题标题】:Can someone walk me through serving gzipped files from Cloudfront via S3 origin?有人可以引导我通过 S3 源从 Cloudfront 提供 gzip 文件吗?
【发布时间】:2022-03-31 15:54:36
【问题描述】:

我已经从 Stackoverflow 上的其他帖子中获得了很多关于这个主题的建议,但我仍然没有成功地让它发挥作用。

网站来源位于 S3 上,通过 Cloudfront 提供服务。浏览其他帖子和亚马逊文档,我看到了以下建议:

1) Gzip 必要的文件,从文件名中删除 .gz,但在上传时,仍将元设置为 gzip。这对我不起作用。 Safari 只是下载 gzip 压缩的文件,而不是作为网页。

2) 亚马逊文档建议同时上传文件的 gzip 和非压缩版本,但它没有提及其工作原理。例如,您是否链接到网站 html 中的 style.css 和 style.css.gz?如果是这样,那是不是因为似乎会发出两个请求而不是一个请求而破坏了 gzipping 的对象以加快站点速度?

此外,当您设置文档时,Cloudfront 旨在检索,例如index.html,如果你有一个 gzipped 和非压缩文件,你将哪个文件设置为要检索的文档?当我将文档设置为 index.html.gz 时,浏览器再次只是下载文件。

我的速度评级在 70-80% 之间,公平地说,这可能会更糟,但也可能会更好。我不是初学者,但我距离成为这方面的专家还有一百万英里,所以我希望我能在这里一步一步地完成。一定有什么我不太对劲的地方。

提前感谢您的帮助。

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudfront


    【解决方案1】:

    这个过程应该是这样的:

    • gzip 文件本地(然后应该称为index.html.gz
    • 删除.gz 扩展名(文件现在称为index.html,但内容已压缩)
    • 将文件上传到 S3
    • 在 S3 管理控制台中文件的元数据选项卡中,根据文件是什么设置正确的 Content-Type,并且
    • Content-Encoding 设置为gzip

    在您的 HTML 标记中链接到压缩后的样式表时,只需指定不带 .gz 扩展名的名称即可。

    测试配置是否有效的好网站是http://gzipwtf.com/

    如果您尝试使用的文件已缓存,请不要忘记使 CloudFront 缓存无效。

    编辑:

    为了不要一直手动处理这些东西,我建议您在某种构建过程中自动执行上传和设置标头的过程。 s3_website 是一个不错的 Ruby gem 入门,但也有其他命令行工具或 Grunt 插件可用。

    【讨论】:

    • 优秀。我不能要求更好的描述。谢谢mxlje。非常感谢。
    • 很高兴你知道了,很乐意提供帮助。
    【解决方案2】:

    我对 Cloudfront 部分了解不多,但对于 gzipping,您还可以使用 Python Lambda 函数。使用gzip 库,这可能非常简单:

    gzipped_content = gzip.compress(f_in.read())
    destinationbucket.upload_fileobj(io.BytesIO(gzipped_content),
                                                            final_file_path,
                                                            ExtraArgs={"ContentType": "text/plain"}
                                                    )
    

    这里有 lambda 函数的完整教程:https://medium.com/p/f7bccf0099c9

    您还可以设置事件触发器,这样每次将新文件上传到 S3 时都会发生转换。

    【讨论】:

      猜你喜欢
      • 2016-06-06
      • 2011-07-23
      • 2015-09-08
      • 1970-01-01
      • 2018-06-06
      • 2023-03-13
      • 2013-05-09
      • 2015-12-22
      • 2016-04-03
      相关资源
      最近更新 更多