浏览器长连接|浏览器同域名请求最大并发限制

一、现象

我是做实时监控的时候遇到的这个问题,一开始啥也不懂,为什么明明请求都发了,我9个监控只能显示6个,剩下的就不显示了,请求一直处于pending(等待)状态。

二、原因

经过咨询前辈和疯狂百度终于搞明白了。
通俗点讲,就是浏览器的请求(以我的为例,每个浏览器不一样)每6个一起发,等这6个请求结束了开始下一组,而实时监控的视频流是一直存在的,并不像接口请求或者图片请求之类的有结束状态,所以超过6个后的请求会一直处于pending状态。

三、解决方案

那么,为什么别人的监控大屏可以一下子多画面呢?研究发现,他们采用了这种方式:官方概念这里就不讲了,就是把域名换掉代替原来的域名(注意:只是更换域名,ip是指向同一个的),这样浏览器就不会进行限制了

举个京东的例子:
京东图片域名一直是老域名360buyimg.com http://img13.360buyimg.com/da/jfs/t1879/131/2924301202/126044/7c7cbf5c/56f3b58fN37c1340a.jpg
比如说这张图片,你可以复制打开这个链接,把前面的二级域名的Img13换成img11、img12、img13等,发现都是可以打开的,而且一般是同一IP,有的同学说换成img8、img1、img2等打不开,这个是策略问题。这只是举个栗子。

回归正题:我自己的项目是react框架的,所以大家都知道跨域问题的代理
p1比如:我现在请求实时监控视频的url是
http://192.168.8.23:8089/video/abcd1.flv
p2然后一共有6个
http://192.168.8.23:8089/video/abcd1.flv
http://192.168.8.23:8089/video/abcd2.flv
http://192.168.8.23:8089/video/abcd3.flv
http://192.168.8.23:8089/video/abcd4.flv
http://192.168.8.23:8089/video/abcd5.flv
http://192.168.8.23:8089/video/abcd6.flv
这6个是正常的,也就是status:200
p3接下来,你想要发第7个
http://192.168.8.23:8089/video/abcd7.flv
这个请求会一直处于pending状态,因为它前面已经有6个192.168.8.23下的并发请求了。
p4怎么解决
s1你把192.168.8.23换成其他随便一个名字比如"videoSys",
像这样:http://videoSys:8089/video/abcd7.flv,注意:端口号还是要的
s2这时候你会发现还是不行,为什么呢?
因为浏览器并不知道"videoSys"指向的主机ip是多少
s3接下来你需要干一件事:C:\Windows\System32\drivers\etc,
根据这个目录找到你电脑C盘下的文件hosts,在最下面一行加上
192.168.8.23 videoSys,注意:中间有个空格
然后再试一下,就可以啦!

四、参考文章:

1、浏览器同域名请求的最大并发数限制
2、突破浏览器域名并发限制的解决方案

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
浏览器从输入URL到显示页面的过程大致可以分为以下几个步骤: 1. DNS解析:浏览器首先会解析URL中的域名部分,将其转换为对应的IP地址。它会先检查浏览器缓存中是否存在该域名的解析结果,如果没有,就会向本地操作系统或者网络中的DNS服务器发送查询请求,获取对应的IP地址。 2. 建立TCP连接:一旦获取到目标服务器的IP地址,浏览器会通过TCP/IP协议与服务器建立连接。这个过程中,浏览器会与服务器进行三次握手,确保双方能够正常通信。 3. 发送HTTP请求:建立TCP连接后,浏览器会发送HTTP请求给服务器。请求中包含了请求行(包括请求方法、URL路径和HTTP协议版本)、请求头(包含一些附加信息,如User-Agent、Cookie等)以及请求体(一般用于POST请求,传递数据)。 4. 服务器处理请求:服务器接收到浏览器发送的HTTP请求后,会根据请求的内容进行处理处理过程可能包括查询数据库、读取文件等一系列操作,最终生成需要返回给浏览器的数据。 5. 接收响应并渲染页面:服务器处理请求后,会将生成的响应数据封装成HTTP响应,并发送给浏览器浏览器接收到响应后,会根据响应头中的信息判断响应的内容类型,然后对内容进行解析和渲染。对于HTML页面,浏览器会解析HTML结构、加载CSS和JavaScript文件,并根据这些文件渲染出最终的页面。 6. 关闭TCP连接:页面渲染完毕后,浏览器会关闭与服务器的TCP连接。如果页面中存在其他资源(如图片、样式表、脚本等),浏览器会继续发送相应的HTTP请求获取这些资源,并进行相应的渲染。 这就是浏览器从输入URL到显示页面的基本过程。其中涉及到的具体细节和技术可以更加深入和复杂,但以上步骤概括了整个过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值