javascript - 串联是否会减少 HTTP2 中的 header 数量?

标签 javascript minify http2

我了解到,由于多 -> 单连接的变化,HTTP2 消除了 JavaScript 文件串联的需要。

但是连接仍然不会减少发送的 header 数量吗?如果发送单独的文件,每个文件是否都会发送自己的一组 header ?

通过串联,只会发送一组 header 。

那么串联仍然会产生微小的差异吗?

最佳答案

在 HTTP/1.1 下,是的,这会有所帮助。

在 HTTP/2 下, header 使用 HPACK 进行压缩。这会构建一个 header 表,然后在未来的请求中使用相同的 header 引用该表,因此不会再次发送完整的 header ,而只是对前一个 header 的较小引用。

但是,还有其他几点需要考虑。

连接的原因:

  • 正文压缩(例如 Gzip)在较大的资源上效果更好,因此连接可能意味着传输的字节数更少。

  • 浏览器发出额外请求仍然会产生开销。无论是创建请求、发送请求、解析请求......等等。 HTTP/2 下的网络影响有所减少,但串联仍然有好处。

不连接的原因:

  • 如果您只发送您需要的资源,那么可能会节省费用。例如。假设您有三个 javascript 文件(1.js2.js3.js),并且通常发送组合的 javascript 文件(例如 all.js)。现在,在 HTTP/2 下,不连接的惩罚并不那么严重,因此您只能发送您需要的内容。因此,如果页面仅需要 1.js3.js,并且仅发送这些内容,那么您可以通过不发送 2.js 来节省字节(以及浏览器端的处理!)。当然,如果您还创建了 1_and_3.js 文件,那么这也可以在 HTTP/1.1 下完成,但创建所有串联组合可能不值得付出努力,而不串联实际上可以节省构建步骤.

  • 同样在缓存方面,如果您不连接,然后更改 1.js,您仍然可以使用 2.js 并且来自缓存的 3.js。以前,用户必须再次下载完整的 all.js 文件才能进行任何代码更改。

因此没有明确的答案,但根据我的经验,我们会减少连接(基本上连接到功能包中),但不会完全消除它。

在我看来,HTTP/2 使事情变得非常有趣,并且可能会导致 Web 性能优化 (WPO) 发生大量变化。

关于javascript - 串联是否会减少 HTTP2 中的 header 数量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48224810/

相关文章:

javascript - SyntaxError : await is only valid in async function. 无法更正

css - 是否有一个高级的 CSS 缩小器/编译器可以执行剥离冗余和逗号分隔相同规则之类的事情?

javascript - 在构建过程中缩小后更新 javascript 引用

ssl - 使用 HTTPS 调用 REST 服务的 Oracle BPEL (Java 8U92) 会产生 SSL 握手异常

javascript - 对在 HTTP1 和 HTTP2 中发送请求感到困惑

php - 使用 PHP-FPM 和 Apache 时如何立即发送 HTTP/2 header

javascript - mediaelement.js:监听从 mep-feature-ads 触发的事件

javascript - 在 extjs4 中获取加载的存储

javascript - 使用 AngularJS 和 Webpack 2 进行缩小

javascript - 如何不将类添加到特定 block ?