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

我正在创build一些挂起的连接到http服务器(彗星,反向ajax等)。 它工作正常,但我看到浏览器只允许两个暂停连接到一个给定的域同时。 因此,如果用户在浏览器的Tab1中查看我的Web应用程序,那么也会尝试在Tab2中加载它,他们已经用完了两个允许连接到我的网站。

我想我可以做一些通配域的事情,我有我的http服务器parsing我的网站的任何地址,如:

*.mysite.com/webapp -> 123.456.789.1 (the actual ip of my server) 

所以:

 a.mysite.com/webapp b.mysite.com/webapp c.mysite.com/webapp 

所有仍然指向(www.mysite.com/webapp),但浏览器认为他们不同的领域,所以我不碰到2连接限制。 这是真的?

即使这事实 – 每个浏览器的活动连接数在所有域中是否有限制? 说我使用上面的scheme – 例如firefox,在任何给定的时间只允许24个并行连接? 就像是:

 1) a.mysite.com/webapp 2) www.download.com/hugefile.zip 3) b.mysite.com/webapp 4) c.mysite.com/webapp ... 24) x.mysite.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 Chrome: 6 

限制是每个服务器/代理,所以你的通配符scheme将工作。

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

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) 
  1. Chrome34 / 32 6 10
  2. IE9 6 35
  3. IE10 8 17
  4. IE11 13 17
  5. Firefox27 / 26 6 17
  6. Safari7.0.1 6 17
  7. Android4 6 17
  8. ChromeMobile18 6 16
  9. IE Mobile9 6 60

第一个值是ConnectionsPerHostname ,第二个值是MaxConnections

资料来源: http : //www.browserscope.org/?category= network& v=top

注意: ConnectionsPerHostname是浏览器对同一个域所做的最大并发http请求数。 为了增加并发连接的数量,可以将资源(例如图像)存放在不同的域中。 但是,在所有域中,不能超过MaxConnections (浏览器将打开的最大连接数)。

各种浏览器对于每个主机名称的最大连接数有各种限制; 你可以在http://www.browserscope.org/?category=networkfind确切的数字,这里有一篇关于Web性能专家Steve Souders的连接限制的有趣文章http://www.stevesouders.com/blog/2008/ 3月20日/舍入上平行的连接/

Firefox会在该设置中存储该号码(您可以在about:configfind它): network.http.max-connections-per-server

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

在页面上做testing我看到了这种行为:

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

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

2个并发请求是许多浏览器devise的有意的部分。 有一个标准在那里,“好的http客户”坚持有意识的。 看看这个RFC ,看看为什么。

在GNU / Linux(Ubuntu)上查看关于Firefox 33的about:config ,并search我发现的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连接)

  1. 是的,通配符域将为您工作。
  2. 没有意识到连接的限制。 限制,如果任何将浏览器特定。

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

我的理解是,客户端的连接限制是不可改变的。 必须在服务器上更改连接限制才能起作用。 默认情况下,许多服务器只允许每个唯一客户端连接2个连接。

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

要非常清楚地看到效果,可以使用诸如JMeter之类的东西来启动一系列的Web服务调用到你的服务器主机 – 它将接受前两个,并且不会接受另一个,直到其中的一个完成。 令人惊讶的是,对于SOA商店来说,这是至关重要的,但是几乎没有人真正意识到这一点。

没有明确的答案,因为每个浏览器都有自己的configuration,这个configuration可能会改变。 如果您在互联网上search,您可以find方法来改变这个限制(通常他们被称为“性能增强方法”。)如果您的网站需要,可能值得build议您的用户这样做。

Interesting Posts