在 HTTP/1.1 中,为了克服队头阻塞问题以及提高页面加载速度,浏览器会与服务器建立多个 TCP 连接,并行地下载资源。然而,过多的连接也会带来新的问题,例如连接建立的开销、资源竞争等。
在 HTTP/2 中,引入了多路复用的概念,它允许在单个 TCP 连接上并发地传输多个请求和响应。这意味着浏览器只需要与服务器建立一个连接,就可以同时下载所需的资源,从而有效地解决了 HTTP/1.1 中存在的问题。
因此,对于长连接,HTTP/2 和 HTTP/1.1 的主要区别在于:
- 连接数量: HTTP/1.1 通常需要多个长连接来实现并行下载,而 HTTP/2 只需要一个长连接。
- 多路复用: HTTP/2 支持多路复用,允许多个请求和响应在单个连接上并发传输,而 HTTP/1.1 不支持。这使得 HTTP/2 在处理长连接方面更高效。
- 头部压缩: HTTP/2 使用 HPACK 算法压缩头部,减少了传输的数据量,进一步提高了性能,尤其在头部信息较多的情况下,例如包含大量 Cookie 的请求。 对于持续的连接,这可以节省大量的带宽。
- 服务器推送: HTTP/2 支持服务器推送,服务器可以主动向客户端推送资源,而无需客户端显式请求。这可以进一步提高页面加载速度,但这并非长连接独有的特性。
总而言之,在 HTTP/2 中,长连接的概念不再像 HTTP/1.1 中那样重要,因为单个连接就可以实现并行传输。HTTP/2 的多路复用、头部压缩等特性使得长连接的效率更高,也更易于管理。 所以,虽然“长连接”的概念仍然存在于 HTTP/2 中(连接保持打开以避免重复建立连接的开销),但其作用和重要性已经发生了变化。 它不再是解决队头阻塞和提高并发性的主要手段,而是作为承载多路复用的基础。
标签:HTTP,1.1,多路复用,服务器,http2,http,推送,连接 From: https://www.cnblogs.com/ai888/p/18583316