我正在创建一些到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作为例子。


当前回答

这个问题没有明确的答案,因为每个浏览器都有自己的配置,而且这个配置可能会改变。如果你在互联网上搜索,你可以找到改变这个限制的方法(通常它们被称为“性能增强方法”),如果你的网站需要这样做,建议你的用户这样做可能是值得的。

其他回答

每个服务器/代理默认同时持久连接的最大数目:

Firefox 2:  2
Firefox 3+: 6
Opera 9.26: 4
Opera 12:   6
Safari 3:   4
Safari 5:   6
IE 7:       2
IE 8:       6
IE 10:      8
Edge:       6
Chrome:     6

限制是每个服务器/代理,所以您的通配符方案可以工作。

供您参考:这是专门与HTTP 1.1相关的;其他协议有单独的关注和限制(即SPDY, TLS, HTTP 2)。

Firefox将该数字存储在以下设置中(您可以在about:config中找到它):network.http.max-connections-per-server

对于最大连接,Firefox将其存储在以下设置中:network.http.max-connections

HTTP / 1.1

IE 6 and 7:      2
IE 8:            6
IE 9:            6
IE 10:           8
IE 11:           8
Firefox 2:       2
Firefox 3:       6
Firefox 4 to 46: 6
Opera 9.63:      4
Opera 10:        8
Opera 11 and 12: 6
Chrome 1 and 2:  6
Chrome 3:        4
Chrome 4 to 23:  6
Safari 3 and 4:  4

来源:http://p2p.wrox.com/book-professional-website-performance-optimizing-front-end-back-end-705/

HTTP / 2 (SPDY)

Multiplexed support(one single TCP connection for all requests)

这个问题没有明确的答案,因为每个浏览器都有自己的配置,而且这个配置可能会改变。如果你在互联网上搜索,你可以找到改变这个限制的方法(通常它们被称为“性能增强方法”),如果你的网站需要这样做,建议你的用户这样做可能是值得的。

请注意,将浏览器每台服务器的最大连接数增加到过多(正如一些网站所建议的那样)可能并且确实会将其他用户锁定在限制服务器上同时连接总数的托管计划的小型网站之外。