了解浏览器的接口请求并发策略,对页面优化也是非常重要的一个环节。现在页面功能越来越复杂,打开一个页面,发起的请求包括静态资源如:js、css、图片、字体,接口数据get\post请求等。页面正常展示内容需要这些请求全部完成。
浏览器为什么要进行并发控制呢?
网络连接的本质为 http 连接,而 http 是封装过的 tcp 连接,那么问题就转化为了:为什么要对 tcp 连接进行并发限制?
每一个 tcp 报文段都包含了源地址、端口和目的地址、端口信息。但是,在报文头部并没有出现任何关于其他报文的信息,也就是说,tcp 连接是互相独立的
那么,为什么要进行 tcp 连接数量限制呢?
tcp 是为了数据传输协议,当一个 tcp 报文段到达目的地时,操作系统至少得安排一个线程将二进制报文段进行接收和存储。
如果不进行限制,有多少请求就收集多少请求,那么当请求量特别大情况下(最大65535),那么当一个人同意网站访问服务器,别的人想要再通过网站访问服务器,服务器将没有多余线程资源服务。
浏览器请求并发策略
同域名下
- 同一GET请求,的并发数是1也就是说上一个请求结束,才会执行下一个请求,否则置入队列等待发送;
- 不同GET/POST请求的并发数量是6,当发送的请求数量达到6个,并且都没有得到响应时,后面的请求会置入队列等待发送。
不同域名下:无限制
主流浏览器并发数
解决/优化并发数限制
- 将资源分散到不同域名
- 减少网络请求
- 配置缓存策略如304
- 请求合并如图片、css、js
- 不使用CSS的【@import】,它会造成额外的请求
- 按需动态引入,减少首次http请求数