我正在创建一些到HTTP服务器的挂起连接(comet,反向AJAX等)。它工作正常,但我看到浏览器只允许两个挂起连接到一个给定的域同时。因此,如果用户在浏览器的Tab1中查看我的网站,然后也尝试在Tab2中加载它,他们已经用完了允许的两个连接到我的网站。
我想我可以做一些通配符域的事情,在那里我有我的HTTP服务器解析任何地址到我的网站,如:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
so:
a.example.com/webapp
b.example.com/webapp
c.example.com/webapp
所有仍然指向(www.example.com/webapp),但浏览器认为他们不同的域,所以我没有遇到2连接限制。这是真的吗?
即使这是真的,每个浏览器在所有域上的活动连接数量有限制吗?假设我使用上面的方案-例如Firefox在任何给定时间只允许24个并行连接吗?喜欢的东西:
1) a.example.com/webapp
2) www.download.example/hugefile.zip
3) b.example.com/webapp
4) c.example.com/webapp
...
24) x.example.com/webapp
25) // Error - all 24 possible connections currently in use!
我只是选择了24个连接/Firefox作为例子。
查看GNU/Linux (Ubuntu)上Firefox 33上的about:config,并搜索连接,我发现:
network.http。最大连接:256
这很可能回答了每个浏览器在所有域上的活动连接数量是否有任何限制
network.http。max-persistent-connections-per-proxy: 32
network.http。max-persistent-connections-per-server: 6
跳过两个属性…
network.websocket。最大连接:200
(有趣的是,它们似乎不受每个服务器的限制,但默认值低于全局HTTP连接)
BrowserVersion | ConnectionsPerHostname | MaxConnections
----------------------------------------------------------
Chrome34/32 | 6 | 10
IE9 | 6 | 35
IE10 | 8 | 17
IE11 | 13 | 17
Firefox27/26 | 6 | 17
Safari7.0.1 | 6 | 17
Android4 | 6 | 17
ChromeMobile18 | 6 | 16
IE Mobile9 | 6 | 60
第一个值是ConnectionsPerHostname,第二个值是MaxConnections。
来源:http://www.browserscope.org/?category=network&v=top
注意:ConnectionsPerHostname是浏览器对同一域的最大并发http请求数。
为了增加并发连接的数量,可以将资源(例如映像)托管在不同的域中。然而,你不能超越
最大连接数,一个浏览器将在所有域中打开的最大连接数。
2020年更新
每个浏览器的并行连接数
| Browser | Connections per Domain | Max Connections |
| -------------------- | ------------------------------ | ------------------------------ |
| Chrome 81 | 6 [^note1] | 256[^note2] |
| Edge 18 | *same as Internet Explorer 11* | *same as Internet Explorer 11* |
| Firefox 68 | 9 [^note1] or 6 [^note3] | 1000+[^note2] |
| Internet Explorer 11 | 12 [^note4] | 1000+[^note2] |
| Safari 13 | 6 [^note1] | 1000+[^note2] |
[^note1]:测试72个请求,1个域(127.0.0.1)
[^note2]:测试1002个请求,每个域6个请求* 167个域(127.0.0.*)
[^note3]:当在异步上下文中调用时,例如在setTimeout的回调中,+ requestAnimationFrame,然后…
[^note4]:其中后6个为随访(分别在0.5s、1s、1.5s可获得2、4、6个)