【发布时间】: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