浏览器的并发连接数是指一个浏览器在同一时间向同一域名发起的最大并行网络连接数,每个HTTP/HTTPS请求(如加载网页、图片、脚本、样式表)都需要使用一个网络连接。浏览器会限定同一域名同一时刻能建立的最大TCP连接数量,超出此限制的请求都需要排队,直到有其他请求完成。
- http是基于tcp实现通讯的,那么文日实际会转化为为什么要对tcp链接进行并行限制?
- 从操作系统端口资源考虑:pc总端口数有限,一个tcp链接占用一个端口,操作系统通常会对总端口数的一半开发对外请求,以防端口数量不被迅速消耗殆尽
- 过多并发导致频繁切换产生性能问题:一个线程对应一个http请求,那么如果并发数量巨大的话会导致线程频繁切换。而线程的上下文切换有时候并不是轻量级的资源,得不偿失。所以请求控制器里会有一个连接池,以复用之前的连接,所以我们可以看作同域名下连接池可以存在4到8个连接,如果连接池全被使用,会阻塞后面请求任务,等待有空闲连接时执行后续任务。
- 避免统一客户端并发大量请求超过服务器的并发阈值;服务器通常会对同一客户端来源设置并发阈值避免恶意攻击,如果浏览器不对同一域名并发限制可能会导致服务端的并发阈值被ban掉
- 客户端的良知机制:为了防止两个应用抢占资源时,强势一方无限制的获取资源导致弱势的一方永远处于阻塞状态