浏览器并发请求及解决方案

2023-05-26 15:06:43 浏览数 (1)

一、规则

前提是同一域名情况下:

  1. 同一get请求的并发数是1,即只有上一个请求结束,才会执行下一次请求,否则即在队列中等待请求
  2. 不同的get/post的请求的并发数量是6个,当达到6个时,其余的在队里中等待请求

二、原因

  1. 操作系统的端口有限,每个请求链接都会占用一个端口,操作系统通常会对总端口的一半对外开发请求,以防数量不呗迅速消耗殆尽
  2. 过多请求导致频繁切换产生性能问题,一个行程对应一个http请求,且线程的切换需要性能消耗。所以请求控制器会产生一个链接池,以复用之前的链接(http1.1及之后版本,即长链接),所以这个池子的数量是有限的,如果池子内全被使用,则会堵塞后续的请求任务,等待空闲链接时才会执行后续的请求任务。
  3. 避免同一客户端请求同一接口,导致服务器压力增大(并发)。

三、http/https1.0、1.1版本下的并发数

  1. Chrome、Firefox为6个
  2. Safari:4个
  3. IE10、11:6个
  4. IE9:10个
  5. IE6:6个
  6. <=IE7、Opera:4个
  7. 对于websocket的并发数,除IE的为6个外,其余的基本上都是几百个256或者200,但Safari的为1273个

四、解决方案

  1. 将请求资源分布到不同的域名下
  2. 利用http缓存,对资源进行缓存处理
  3. 减少资源请求,如:Vue使用动态路由,按需倒入

0 人点赞