在浏览器中的最大并行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)
- 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 (浏览器将打开的最大连接数)。
各种浏览器对于每个主机名称的最大连接数有各种限制; 你可以在http://www.browserscope.org/?category=networkfind确切的数字,这里有一篇关于Web性能专家Steve Souders的连接限制的有趣文章http://www.stevesouders.com/blog/2008/ 3月20日/舍入上平行的连接/
Firefox会在该设置中存储该号码(您可以在about:config
find它): 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连接)
- 是的,通配符域将为您工作。
- 没有意识到连接的限制。 限制,如果任何将浏览器特定。
请注意,将每台服务器的浏览器最大连接数增加到过多(如某些站点所build议的),可以并且确实将其他用户locking在小型站点之外,而托pipe计划会限制服务器上的同时连接总数。
我的理解是,客户端的连接限制是不可改变的。 必须在服务器上更改连接限制才能起作用。 默认情况下,许多服务器只允许每个唯一客户端连接2个连接。
客户端不是浏览器,而是发送TCP / IP请求的客户端机器。
要非常清楚地看到效果,可以使用诸如JMeter之类的东西来启动一系列的Web服务调用到你的服务器主机 – 它将接受前两个,并且不会接受另一个,直到其中的一个完成。 令人惊讶的是,对于SOA商店来说,这是至关重要的,但是几乎没有人真正意识到这一点。
没有明确的答案,因为每个浏览器都有自己的configuration,这个configuration可能会改变。 如果您在互联网上search,您可以find方法来改变这个限制(通常他们被称为“性能增强方法”。)如果您的网站需要,可能值得build议您的用户这样做。