2016-05-31 63 views
22

我正在开始一个新项目,我正在试着对它进行前瞻性思考。我以前使用过Browserify。对于我的新项目,我想使用Webpack,Rollup或SystemJS。 Webpack看起来是迄今为止最成熟的,有很多很棒的功能。与HTTP/2一起使用Webpack的价值是什么

但是我担心Webpack会在采用HTTP/2的一两年内无关紧要。所以我想知道,Webpack为通过HTTP/2提供服务的网站提供什么价值?我不是在寻找意见,而是对HTTP/2使用Webpack的好处的事实解释。如果没有好处,或者没有什么好处,那也会帮助我做出决定。

+4

我觉得只要我们以“我想要的事实”(表面上看来是关于意见的事实)来表达我们的意见请求,这有点幽默。 “offtopic”巡逻留下它。对你很好@battmanz,你狡猾的狗! –

+0

@ZephyrPellerin嘿,我得让我的问题得到解答我可以任何方式! :) – battmanz

回答

15

TL; DR

在HTTP/1.1,你必须尽量少的要求,尽可能获取性能;在HTTP/2中,您对每个请求的性能影响最小,但仍可能会遇到资源约束和依赖性管理,这需要捆绑工具(如webpack)。

龙版本:

的WebPack(或任何其它捆绑)在HTTP/2世界仍能提供价值,因为在HTTP/2允许复用,异步的,从客户端同步查询到服务器,它并不意味着您连接的实际服务器具有无限的容量来处理它们,甚至可以允许它们。

在连接时发送的设置框架中,大多数服务器会将并发流的数量限制为合理的值,例如100。这意味着您不能发出超过100个并发请求,如果您需要以数百个js文件为例展示一个大型非捆绑式React应用程序。此外,在许多情况下,您在JavaScript文件之间存在传递依赖关系,并且如果您未捆绑所有依赖项,则需要多次请求往返,因为浏览器在接收到以前的响应时才会发现依赖关系,否定HTTP/2的好处。 (或者,服务器可能能够自动推送依赖关系,但这会产生一整套其他问题)。

出于这些原因,是有意义的使用的WebPack打包多个同类捆,以确保您的最大并发请求保持低于服务器的限制,同时保持你的包粒度不够充分利用高效的浏览器缓存。

+4

且不说的WebPack 2的AgressiveSplittingPlugin:看https://medium.com/webpack/webpack-http-2-7083ec3f3ce6#.zdo4juvgo –

+3

和用法AgressiveSplittingPlugin https://github.com/webpack/webpack/tree/主/示例/ http2侵略性分裂 –

相关问题