Skip to content

计算机网络-HTTP连接数量限制

1. 为什么单一域名支持的连接有限

  • chrome 浏览器对于一个域名 origin ,仅仅支持 6HTTP 连接。
  • 目的是为了防止单个域名并发请求 HTTP 数量过多,造成对于服务器的过大压力。早期的 IE 浏览器甚至最多只支持同时连接 2 个。

2. 怎么解决这个问题

2.1 远古时期的解决方案

  • 使用 Connection: keep-alive 来复用 TCP 连接(HTTP 1.0 需要显式指定,HTTP 1.1 默认开启)
  • 域名拆分:既然一个域名最多支持 6 条,那么可以将静态资源(图片 JS 等等)分散到多个域名当中进行请求。(在 HTTP 1.x 时代,往往一个图片就意味着一个 HTTP 请求)
  • CSS Sprites: 将多个图片合并成一个大的图片。
  • Base64 IMG: 将图片转义成 base 64 放在 HTML 或者 JS 当中。
  • webpack: 将多个 JS 资源打包到一起。
  • 懒加载:需要什么才加载什么
  • CDN:内容分发网络可以预先加载好资源之类的

2.2 HTTP 2.0 的解决方案

  • 多路复用HTTP/2 引入了多路复用机制,允许多个请求在单个 TCP 连接上几乎同时进行,显著减少了页面加载时间和服务器压力。
  • 服务器推送HTTP/2 允许服务器主动推送资源到浏览器缓存中,在浏览器还没明确请求之前就预加载必要的资源,进一步提高加载效率。
  • 头部压缩HTTP/2 使用了专门的算法(如 HPACK )来压缩客户端和服务器之间交换的 HTTP 头,减少了开销。
  • 优先级控制HTTP/2 允许设置请求之间的优先级,确保首先加载对当前页面最重要的资源。

通过这些方法,HTTP/2 显著提高了 web 性能,减少了延迟,并且在很大程度上解决了之前版本中存在的连接数量限制问题。随着 HTTP/3 的逐步推出和采用,基于QUIC协议的性能和安全性进一步得到提升,未来的HTTP连接数量限制和性能问题将继续得到缓解。