我最近发现Chrome似乎有6的连接限制(Chrome挂在一定数量的数据传输后-等待可用的套接字)不幸的是,我发现这是通过获得一个"等待可用的套接字"消息后加载太多标签(7)的困难方式。
我知道这是Chrome,因为另一个Chrome用户(又名另一个浏览器会话)在同一时间在同一台计算机上加载网页完美(我有多个Chrome用户在我的计算机上打开)。因此,无论如何,它都不是服务器。
我相信这是因为,in socket。io(我正在使用通知),我是xhr轮询,这导致Chrome必须等到它可以从其中一个连接中抓取套接字,然后才能处理页面。
这个问题的解决方法是什么?
我想到了几个解决方案:
- 使xhr-polling窗口更小,这增加了浏览器和node.js中的连接,但这意味着页面不会停滞。
- 使用尚。我不确定websockets是否对这个问题免疫。
- 在未集中的选项卡上使连接无效。虽然其他网站似乎不需要这样做… 使用某种连接共享。考虑到Chrome将websockets和xhr请求隔离到标签,我确实很难理解这是如何工作的。
作为补充点:我没有从一开始就使用websockets的原因是因为我使用cloudflare。但如果这是解决问题的办法,那就这样吧。
使用真正的webSocket,而不是XHR轮询。webSocket连接不计入到同一源的http连接限制。
对于可以创建多少webSocket连接有单独的全局限制,但这是一个很高的数字(Firefox中为200 -不确定Chrome中具体是多少)。
这里有一些关于这个话题的参考资料:
-
最大并行http连接在浏览器?
-
浏览器到同一域的最大并发连接数
-
每台主机的HTTP同时连接限制是每个标签,每个浏览器实例还是全局的?