计算机网络-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连接数量限制和性能问题将继续得到缓解。