我正在开始一个新项目,并且我正在尝试前瞻性地思考它。我过去使用过 Browserify。对于我的新项目,我想使用 Webpack、Rollup 或 SystemJS。 Webpack 看起来是迄今为止最成熟的,具有大量出色的功能。
不过,我担心 Webpack 将在一两年内随着 HTTP/2 的采用而变得无关紧要。所以我想知道,Webpack 为通过 HTTP/2 提供服务的网站提供什么价值?我不是在寻找意见,而是在寻找将 Webpack 与 HTTP/2 结合使用的好处的事实解释。如果没有好处,或者好处很少,那也会帮助我做出决定。
TL;DR
在 HTTP/1.1 中,您必须发出尽可能少的请求才能获得性能;在 HTTP/2 中,每个请求对性能的影响很小,但仍然会遇到资源限制和依赖管理,这需要使用 webpack 等捆绑工具。
长版:
Webpack(或任何其他捆绑器)仍然可以在 HTTP/2 世界中提供价值,因为虽然 HTTP/2 允许从客户端到服务器的多路复用、异步、同步查询,但这并不意味着您要连接的实际服务器有无限的能力来处理它们,甚至允许它们。
在连接时发送的 SETTINGS 帧中,大多数服务器会将并发流的数量限制为合理的值,例如 100。这意味着您不能发出超过 100 个并发请求,如果您有大量未捆绑的请求,这就是一个问题React 应用程序包含数百个 js 文件。
此外,在许多情况下,JavaScript 文件之间存在传递依赖关系,如果不捆绑所有依赖关系,则需要多次请求往返,因为浏览器只有在收到先前的响应时才会发现依赖关系,从而否定 HTTP/ 2好处。 (或者,服务器可能能够自动推送依赖项,但这会产生一系列其他问题)。
出于这些原因,使用 webpack 打包多个同质包是有意义的,以确保最大并发请求保持在服务器限制以下,同时保持包的粒度足以利用高效的浏览器缓存。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)