HTTP/2 使用 Webpack 的价值是什么
What is the value of using Webpack with HTTP/2
我正在开始一个新项目,我正努力向前思考它。我过去使用过 Browserify。对于我的新项目,我想使用 Webpack、Rollup 或 SystemJS。 Webpack 看起来是迄今为止最成熟的,具有大量很棒的功能。
不过,我担心随着 HTTP/2 的采用,Webpack 在一两年内将变得无关紧要。所以我想知道,Webpack 为在 HTTP/2 上提供服务的站点提供什么价值?我不是在寻找意见,而是在 HTTP/2 中使用 Webpack 的好处的事实解释。如果没有好处,或者好处很少,那也有助于我的决定。
TL;DR
在 HTTP/1.1 中,您必须发出尽可能少的请求才能获得性能;在 HTTP/2 中,您对每个请求的性能影响最小,但仍然会遇到资源限制和依赖管理,这将需要诸如 webpack 之类的捆绑工具。
长版:
Webpack(或任何其他捆绑器)仍然可以在 HTTP/2 世界中提供价值,因为虽然 HTTP/2 允许从客户端到服务器的多路复用、异步、同时查询,但这并不意味着您连接到的实际服务器具有无限容量来处理它们,甚至允许它们。
在您连接时发送的SETTINGS帧中,大多数服务器会将并发流的数量限制为合理的值,例如100。这意味着您不能发出超过100个并发请求,如果您有例如,一个包含数百个 js 文件的大型未捆绑 React 应用程序。
此外,在许多情况下,javascript 文件之间存在传递依赖关系,如果不捆绑所有依赖关系,您将需要多次请求往返,因为浏览器只会在以下情况下发现依赖关系它收到了之前的回复,否定了 HTTP/2 的好处。 (或者,服务器可能能够自动推送依赖项,但这会产生一系列其他问题)。
出于这些原因,使用 webpack 来打包大量同类包以确保您的最大并发请求保持在服务器限制以下,同时保持您的包足够细化以利用有效的浏览器缓存是有意义的。
我正在开始一个新项目,我正努力向前思考它。我过去使用过 Browserify。对于我的新项目,我想使用 Webpack、Rollup 或 SystemJS。 Webpack 看起来是迄今为止最成熟的,具有大量很棒的功能。
不过,我担心随着 HTTP/2 的采用,Webpack 在一两年内将变得无关紧要。所以我想知道,Webpack 为在 HTTP/2 上提供服务的站点提供什么价值?我不是在寻找意见,而是在 HTTP/2 中使用 Webpack 的好处的事实解释。如果没有好处,或者好处很少,那也有助于我的决定。
TL;DR
在 HTTP/1.1 中,您必须发出尽可能少的请求才能获得性能;在 HTTP/2 中,您对每个请求的性能影响最小,但仍然会遇到资源限制和依赖管理,这将需要诸如 webpack 之类的捆绑工具。
长版:
Webpack(或任何其他捆绑器)仍然可以在 HTTP/2 世界中提供价值,因为虽然 HTTP/2 允许从客户端到服务器的多路复用、异步、同时查询,但这并不意味着您连接到的实际服务器具有无限容量来处理它们,甚至允许它们。
在您连接时发送的SETTINGS帧中,大多数服务器会将并发流的数量限制为合理的值,例如100。这意味着您不能发出超过100个并发请求,如果您有例如,一个包含数百个 js 文件的大型未捆绑 React 应用程序。
此外,在许多情况下,javascript 文件之间存在传递依赖关系,如果不捆绑所有依赖关系,您将需要多次请求往返,因为浏览器只会在以下情况下发现依赖关系它收到了之前的回复,否定了 HTTP/2 的好处。 (或者,服务器可能能够自动推送依赖项,但这会产生一系列其他问题)。
出于这些原因,使用 webpack 来打包大量同类包以确保您的最大并发请求保持在服务器限制以下,同时保持您的包足够细化以利用有效的浏览器缓存是有意义的。