HTTP/2 改变了什么?带来了哪些提升?
最后更新于:2022-04-01 06:09:02
**HTTP/2 改变了什么?带来了哪些提升?**
HTTP/1.x 公认最大的性能瓶颈就是 TCP 连接数过多。建立一个 TCP 连接需要三次握手,也就是三次往返于服务器和客户端之间。三次握手所需的时间无法用提升带宽来弥补。而现在的网页一般都内容丰富,在 HTTP/1.x 下载完整个网页一般需要很多很多个 TCP 连接。如果用开发者工具查看网络加载流,可以看到阻塞时间(也叫做 Time To First Byte,[参考文献](https://www.nginx.com/http2-ebook/ "High Performance Browser Network Special Edition: Selected Content For HTTP2")),尤其是小资源的阻塞时间占比非常大。此外,每次 TCP 连接都需要传递 HTTP Header 信息,也是一笔带宽开销。这还不够,HTTP/1.x 由于基本是无脑按顺序加载资源,需要浏览器和前端工程师对预加载、加载优先级等做很多额外的工作。
[![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2015-12-18_56740bdf6b3df.jpg)](http://www.bokeyy.com/wp-content/uploads/2015/12/d811a507-3599-4630-9add-bbf6e2ec8fa2.jpg)
HTTP/1.x 协议下绿色的阻塞时间延迟可观
而 HTTP/2 解决了这个问题。相比之下,HTTP/2 一方面复用同一IP且同一证书下的一个 TCP 连接,另一方面压缩了 HTTP Header,最后还提供了 Server Push 特性,解决了这些问题。
更多可翻阅 [HTTPS、SPDY和HTTP/2的性能比较](http://www.infoq.com/cn/news/2015/02/https-spdy-http2-comparison) [某个TCP连接数非常多的网页性能实测比较](http://www.webpagetest.org/video/compare.php?tests=150324_RB_60944f6da93253f7ecb9148584ebee11,150324_MR_b218a2ade1b90e679a525964061ef7b6)。