Html 浏览器中的最大并行http连接数?
我正在创建一些到HTTP服务器的挂起连接(comet、ReverseAJAX等)。它工作正常,但我看到浏览器只允许同时连接到给定域的两个挂起连接。因此,如果用户在浏览器的Tab1中查看我的网站,然后又尝试将其加载到Tab2中,那么他们已经用完了与我的网站的两个允许连接 我想我可以做一些通配符域的事情,让我的http服务器解析我站点的任何地址,如:Html 浏览器中的最大并行http连接数?,html,http,web-applications,persistent-connection,web-performance,Html,Http,Web Applications,Persistent Connection,Web Performance,我正在创建一些到HTTP服务器的挂起连接(comet、ReverseAJAX等)。它工作正常,但我看到浏览器只允许同时连接到给定域的两个挂起连接。因此,如果用户在浏览器的Tab1中查看我的网站,然后又尝试将其加载到Tab2中,那么他们已经用完了与我的网站的两个允许连接 我想我可以做一些通配符域的事情,让我的http服务器解析我站点的任何地址,如: *.example.com/webapp -> 192.0.2.1 (the actual ip of my server) 因此: 所有的
*.example.com/webapp -> 192.0.2.1 (the actual ip of my server)
因此:
所有的都指向(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)。这两个并发请求是许多浏览器设计的有意部分。有一个标准是“好的http客户机”故意遵守的。查看原因。Firefox将该数字存储在此设置中(您可以在
关于:config
中找到它):网络.http.每台服务器的最大连接数
对于最大连接数,Firefox将其存储在此设置中:
network.http.max connections
请注意,将浏览器每台服务器的最大连接数增加到过多(正如某些网站所建议的)通过限制服务器上同时连接总数的托管计划,可以并且确实将其他用户锁定在小型站点之外。各种浏览器对每个主机名的最大连接有各种限制;你可以在网站上找到确切的数字
这里有一篇关于连接限制的有趣文章,来自web性能专家Steve SoudersHTTP/1.1
资料来源:
HTTP/2(SPDY)
查看GNU/Linux(Ubuntu)上Firefox33上的
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连接的默认值)
第一个值是ConnectionsPerHostname,第二个值是MaxConnections
资料来源:
注意:ConnectionsPerHostname是浏览器将向同一域发出的最大并发http请求数。
为了增加并发连接的数量,可以在不同的域中托管资源(例如图像)。但是,您不能超过
MaxConnections,浏览器将在所有域中打开的最大连接总数
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项是后续行动(2、4、6项分别在0.5s、1s和1.5s时提供)
要非常清楚地看到效果,请使用JMeter之类的工具向您的服务器主机发出一系列web服务调用—它将接受前两个,并且在完成其中一个之前不会接受另一个。令人惊奇的是,对于SOA商店来说,这是至关重要的,但几乎没有人真正意识到这一点。我很惊讶。HTTP 1.1 RFC不是说将每个服务器的持久连接限制为2个吗?是的。最近的浏览器不再符合要求。引用这些限制?每个源站的WebSocket连接是否有任何限制?HTTP 1.1 RFC中已删除了每个服务器2个连接的限制:我同意,可能最好遵循该标准。以下标准很好,但应用常识并参与修改这些规则也是如此:请参阅Good point@JulianReschke,但对于HTTP/2,不再要求每个主机有大量连接。请参阅:请参阅是,它被称为,这在HTTP/2时代是一种过时的策略。这里的解决方案是,对于所有选项卡更新,只有一个挂起的连接。当一个选项卡打开时,该选项卡的更新请求被发送到服务器,该选项卡侦听主挂起连接上的任何更新,并且只拾取该更新
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
Multiplexed support(one single TCP connection for all requests)
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
| 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] |