浏览器中的最大并行http连接数?

我正在创建一些到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为例进行说明。

前端SamTom2020/03/20 10:15:06

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

米亚米亚小卤蛋2020/03/20 10:15:06

我的理解是,连接限制在客户端无法更改。必须在服务器上更改连接限制才能生效。默认情况下,许多服务器每个唯一客户端仅允许2个连接。

客户端不是浏览器,而是发出TCP / IP请求的客户端计算机。

为了非常清楚地看到效果,请使用诸如JMeter之类的功能来触发对服务器主机的一堆Web服务调用-它会接受前两个,并且直到两个中的一个完成后才会接受另一个。令人惊奇的是,对于SOA商店来说,这很关键,但几乎没有人真正意识到这一点。

阿飞伽罗2020/03/20 10:15:06
  1. 是的,通配符域将为您工作。
  2. 不知道对连接有任何限制。限制(如果有)是特定于浏览器的。
西门逆天猴子2020/03/20 10:15:06

看着about:config在GNU / Linux上的Firefox 33(Ubuntu的),和搜索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连接)

斯丁Jim2020/03/20 10:15:06

没有确切的答案,因为每个浏览器对此都有自己的配置,并且此配置可能会更改。如果您在Internet上搜索,则可以找到更改此限制的方法(通常将它们标记为“性能增强方法”。)如果您的网站需要这样做,则建议用户建议这样做。

十三村村蛋蛋2020/03/20 10:15:06

2个并发请求是许多浏览器设计的有意部分。有一个标准是“好的http客户端”故意遵守的。查看此RFC,以了解原因。

猪猪JinJin西里2020/03/20 10:15:06
 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,这是浏览器将在所有域中总共打开的最大连接数。

神乐Mandy米亚2020/03/20 10:15:06

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

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

猿米亚2020/03/20 10:15:06

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)
Pro小卤蛋2020/03/20 10:15:06

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

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)。

番长千羽2020/03/20 10:15:06

各种浏览器对每个主机名的最大连接有不同的限制。您可以在http://www.browserscope.org/?category=network上找到确切的数字, 这是Web性能专家Steve Souders撰写的有关连接限制的有趣文章http://www.stevesouders.com/blog/2008/ 03/20 / round-on-parallel-connections /

神奇Green2020/03/20 10:15:06

在页面上进行测试时,我看到了以下行为:

Safari 4: 6  
Chrome 6: 7  
FF 4: 6

编辑:似乎firefox 4应该能够进行15个连接,但这不是我观察到的行为。