我正在创建到HTTP服务器的一些挂起的连接(comet,反向ajax等)。 一切正常,但我看到浏览器仅允许同时暂停到给定域的两个连接。 因此,如果用户在浏览器的Tab1中查看我的网站,然后又尝试在Tab2中加载该网站,则他们已经用完了两个允许访问我的网站的连接。
我想我可以做一些通配符域的事情,在这里我的HTTP服务器可以将网站的任何地址解析为:
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
所以:
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为例进行说明。
#1楼
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)
#2楼
在GNU / Linux(Ubuntu)上的Firefox 33上查看about:config
,并搜索connections
我发现:
network.http.max-connections:256
这可能是因为在所有域中每个浏览器的活动连接数没有限制
网络。http.max-persistent-connections-per-proxy:32
网络.http.max-persistent-connections-per-server:6
跳过了两个属性...
network.websocket.max连接数:200
(有趣的是,似乎它们不受服务器限制,但默认值低于全局http连接)
#3楼
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请求的最大数目。 为了增加并发连接的数量,可以在不同域中托管资源(例如图像)。 但是,您不能超过MaxConnections ,即浏览器在所有域中总共打开的最大连接数。
#4楼
我的理解是,连接限制在客户端不可更改。 必须在服务器上更改连接限制才能生效。 默认情况下,许多服务器每个唯一客户端仅允许2个连接。
客户端不是浏览器,它是发出TCP / IP请求的客户端计算机。
要非常清楚地看到效果,请使用JMeter之类的功能来触发对服务器主机的一堆Web服务调用-它会接受前两个,并且直到两个中的一个完成后才会接受另一个。 令人惊奇的是,对于SOA商店来说,这很关键,但几乎没有人真正意识到这一点。
#5楼
在页面上进行测试时,我看到了以下行为:
Safari 4: 6
Chrome 6: 7
FF 4: 6
编辑:似乎firefox 4应该能够进行15个连接,但这不是我观察到的行为。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3161810