【问题标题】:How to serve Gziped webpack bundles from AWS S3如何从 AWS S3 提供 Gziped webpack 包
【发布时间】:2015-09-15 11:23:18
【问题描述】:

我需要从 AWS S3 提供一个 webpack 包(和派生资产),如果浏览器支持,我想提供这些 Gziped 文件。 S3 不会即时压缩内容,因此您必须上传资产的未压缩和压缩版本,并实现从客户端选择相应版本的逻辑。

现在,当我从服务器提供 html 页面时,我可以选择加载 main.bundle.js 文件或其压缩版本 main.bundle.js.gz,具体取决于请求中的 Accept-encoding 标头。

问题是 webpack 对我的资源的 Gziped 版本一无所知,因此它会继续加载其余的捆绑包块及其未压缩文件。

有没有办法告诉 webpack 加载捆绑包块和其他在其路径后附加后缀的文件(在本例中为 .gz)?

我能想到的唯一解决方案是生成两个单独的包,一个用于未压缩文件,另一个用于 gzip 文件,使用不同的publicPath 来区分它们。但我认为这可能有点矫枉过正,因为这两个捆绑包实际上是相同的。

有什么想法吗?

谢谢!

【问题讨论】:

  • 有没有人关心的原生不支持gzip的浏览器?我压缩我的内容,保存 没有 .gz 扩展名,设置Content-Encoding: gzip 并...完成。
  • @Michael-sqlbot 说得很好,但鉴于我不知道哪些浏览器会请求我们的网站,而且我的指示是我们必须为所有浏览器提供支持,我必须为压缩和未压缩的网站
  • @iuri 你不应该关心浏览器支持。除非您回到 90 年代的浏览器,否则它实际上是通用的,这意味着您部署的应用程序可能无论如何都无法正常运行。有一些非常极端的“客户端”,例如爬虫、机器人,也许还有一些旧的服务器工具可能会受到影响,但同样,它们会非常陈旧,不太可能对您的目标用户群产生影响。

标签: amazon-web-services web-applications amazon-s3 gzip webpack


【解决方案1】:

如果您在 S3 存储桶上启用 CloudFront,他们最近 (12/17) 刚刚将选项添加到 gzip。见:https://aws.amazon.com/blogs/aws/new-gzip-compression-support-for-amazon-cloudfront/

【讨论】:

    猜你喜欢
    • 2020-06-13
    • 2021-07-11
    • 2017-10-31
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2018-06-06
    • 2018-10-17
    • 1970-01-01
    相关资源
    最近更新 更多