一、规则
前提是同一域名情况下:
- 同一get请求的并发数是1,即只有上一个请求结束,才会执行下一次请求,否则即在队列中等待请求
- 不同的get/post的请求的并发数量是6个,当达到6个时,其余的在队里中等待请求
二、原因
- 操作系统的端口有限,每个请求链接都会占用一个端口,操作系统通常会对总端口的一半对外开发请求,以防数量不呗迅速消耗殆尽
- 过多请求导致频繁切换产生性能问题,一个行程对应一个http请求,且线程的切换需要性能消耗。所以请求控制器会产生一个链接池,以复用之前的链接(http1.1及之后版本,即长链接),所以这个池子的数量是有限的,如果池子内全被使用,则会堵塞后续的请求任务,等待空闲链接时才会执行后续的请求任务。
- 避免同一客户端请求同一接口,导致服务器压力增大(并发)。
三、http/https1.0、1.1版本下的并发数
- Chrome、Firefox为6个
- Safari:4个
- IE10、11:6个
- IE9:10个
- IE6:6个
- <=IE7、Opera:4个
- 对于websocket的并发数,除IE的为6个外,其余的基本上都是几百个256或者200,但Safari的为1273个
四、解决方案
- 将请求资源分布到不同的域名下
- 利用http缓存,对资源进行缓存处理
- 减少资源请求,如:Vue使用动态路由,按需倒入