我正在创建一些到HTTP服务器的挂起连接(彗星,反向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作为示例。
答案 0 :(得分:384)
每个服务器/代理的默认同时持久连接数:
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
Chrome: 6
限制是每服务器/代理,因此您的通配符方案将起作用。
仅供参考:这与HTTP 1.1特别相关;其他协议有不同的问题和限制(即SPDY,TLS,HTTP 2)。
答案 1 :(得分:187)
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/
Multiplexed support(one single TCP connection for all requests)
答案 2 :(得分:91)
BrowserVersion | ConnectionsPerHostname | MaxConnections
第一个值是 ConnectionsPerHostname ,第二个值是 MaxConnections 。
来源:http://www.browserscope.org/?category=network&v=top
注意: ConnectionsPerHostname 是浏览器将对同一个域进行的最大并发http请求数。 为了增加并发连接的数量,可以在不同的域中托管资源(例如图像)。但是,你不能超过 MaxConnections ,浏览器将在所有域中打开的最大连接数。
答案 3 :(得分:44)
各种浏览器对每个主机名的最大连接有各种限制;你可以在http://www.browserscope.org/?category=network找到确切的数字 这是一篇关于网络性能专家Steve Souders http://www.stevesouders.com/blog/2008/03/20/roundup-on-parallel-connections/
的连接限制的有趣文章答案 4 :(得分:14)
Firefox会在此设置中存储该号码(您可以在about:config
中找到):network.http.max-connections-per-server
对于最大连接数,Firefox会在此设置中存储:network.http.max-connections
答案 5 :(得分:8)
在页面上进行测试我看到了这种行为:
Safari 4: 6
Chrome 6: 7
FF 4: 6
编辑:似乎firefox 4应该可以做15个连接,但这不是我观察到的行为。
答案 6 :(得分:5)
2个并发请求是许多浏览器设计的有意内容。有一个标准,“良好的http客户端”是故意坚持的。查看this RFC以查看原因。
答案 7 :(得分:4)
在GNU / Linux(Ubuntu)上查看Firefox 33上的about:config
,并搜索connections
我发现:
network.http.max-connections:256
可能会回答部分对所有域中每个浏览器的活动连接数有任何限制
network.http.max-persistent-connections-per-proxy:32
network.http.max-persistent-connections-per-server:6
跳过了两个属性......
network.websocket.max-connections:200
(有趣的是,似乎它们不受每台服务器的限制,但默认值低于全局http连接)
答案 8 :(得分:1)
对此没有明确的答案,因为每个浏览器都有自己的配置,并且可能会更改此配置。如果您在互联网上搜索,您可以找到更改此限制的方法(通常它们被称为“性能增强方法”。)如果您的网站需要,可能值得建议您的用户这样做。
答案 9 :(得分:1)
答案 10 :(得分:1)
请注意,将每个服务器的浏览器最大连接数增加到过多数量(如某些网站建议的那样)可以并确实将其他用户锁定在小型网站之外,其中托管计划限制了服务器上的同时连接总数。
答案 11 :(得分:1)
我的理解是连接限制在客户端不可更改。必须在服务器上更改连接限制才能生效。默认情况下,许多服务器每个唯一客户端只允许2个连接。
客户端不是浏览器,而是发出TCP / IP请求的客户端计算机。
要非常清楚地看到效果,请使用JMeter之类的东西来启动对服务器主机的大量Web服务调用 - 它将接受前两个,并且在完成两个中的一个之前不会接受另一个。令人惊奇的是,对于SOA商店来说,这是至关重要的,但几乎没有人真正意识到这一点。