如何从AWS S3提供Gziped的webpack捆绑包

5
我需要从AWS S3中提供webpack捆绑包(以及派生资产),如果浏览器支持,则希望提供这些文件的Gzip压缩版本。S3不会即时压缩内容,因此您必须上传未压缩和压缩版本的资产,并实现逻辑以从客户端选择相应的版本。
现在,当我从服务器提供html页面时,我可以选择加载main.bundle.js文件或其压缩版本main.bundle.js.gz,具体取决于请求中的Accept-encoding头。
问题是webpack不知道我的资产的Gzip版本,因此它继续使用未压缩文件加载其余的捆绑包块。
是否有一种方法可以告诉webpack在路径后附加后缀(在这种情况下为.gz)来加载捆绑块和其他文件?
我能想到的唯一解决方案是生成两个单独的捆绑包,一个用于未压缩的文件,另一个用于gzip版本,具有不同的publicPath以区分它们。但我认为这可能有点过度,因为两个捆绑包几乎完全相同。
您有什么想法吗?
谢谢!

3
有没有一些不支持gzip压缩的浏览器被人们所关注?我对内容进行了gzip压缩,保存时没有加上.gz扩展名,并设置了"Content-Encoding: gzip",就这样完成了。 - Michael - sqlbot
@Michael-sqlbot 这是个好观点,但考虑到我不知道哪些浏览器会请求我们的网站,而且我的指示是我们必须支持所有浏览器,所以我必须同时提供压缩和未压缩的网站。 - iuri
@iuri,你不应该担心浏览器支持问题。除非你回到90年代的浏览器时代,否则它几乎是普遍的,这意味着你部署的应用程序可能无法正确运行。有一些非常特殊的“客户端”,如爬虫、机器人和一些旧版服务器工具可能会受到影响,但这些都非常老旧,不太可能对你的目标用户群产生影响。 - pho3nixf1re
1个回答

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接