计算机网络-HTTP连接数量限制
1. 为什么单一域名支持的连接有限
chrome
浏览器对于一个域名origin
,仅仅支持6
个HTTP
连接。- 目的是为了防止单个域名并发请求
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连接数量限制和性能问题将继续得到缓解。