了解浏览器请求并发策略

684 阅读2分钟

了解浏览器的接口请求并发策略,对页面优化也是非常重要的一个环节。现在页面功能越来越复杂,打开一个页面,发起的请求包括静态资源如:js、css、图片、字体,接口数据get\post请求等。页面正常展示内容需要这些请求全部完成。

浏览器为什么要进行并发控制呢?

网络连接的本质为 http 连接,而 http 是封装过的 tcp 连接,那么问题就转化为了:为什么要对 tcp 连接进行并发限制?

每一个 tcp 报文段都包含了源地址、端口和目的地址、端口信息。但是,在报文头部并没有出现任何关于其他报文的信息,也就是说,tcp 连接是互相独立的

那么,为什么要进行 tcp 连接数量限制呢?

tcp 是为了数据传输协议,当一个 tcp 报文段到达目的地时,操作系统至少得安排一个线程将二进制报文段进行接收和存储。

如果不进行限制,有多少请求就收集多少请求,那么当请求量特别大情况下(最大65535),那么当一个人同意网站访问服务器,别的人想要再通过网站访问服务器,服务器将没有多余线程资源服务。

浏览器请求并发策略

同域名下

  • 同一GET请求,的并发数是1也就是说上一个请求结束,才会执行下一个请求,否则置入队列等待发送;
  • 不同GET/POST请求的并发数量是6,当发送的请求数量达到6个,并且都没有得到响应时,后面的请求会置入队列等待发送。

不同域名下:无限制

主流浏览器并发数

image.png

解决/优化并发数限制

  • 将资源分散到不同域名
  • 减少网络请求
    • 配置缓存策略如304
    • 请求合并如图片、css、js
    • 不使用CSS的【@import】,它会造成额外的请求
    • 按需动态引入,减少首次http请求数