The HTTP/1.1 RFC says a single-user client SHOULD NOT maintain more than 2 simultaneous connections with any server or proxy. This rule is on a per server basis. Using multiple domain names, such as 1.mydomain.com, 2.mydomain.com, 3.mydomain.com, allows a web developer to achieve a multiple of the per server connection limit, even if all the domain names are CNAMEs to the same IP address. This is called domain sharding. There are several issues with this technique : The main one is that domain sharding results in more DNS lookups and takes extra time to make the initial connections.
Modern browsers don’t follow the guideline and exceed 2 connections per server. The following list shows some actual values :
Browser | connections per host | max connections |
IE 9 | 6 | 35 |
Firefox 10 | 6 | 60 |
Safari 5.1 | 6 | 35 |
Chrome 19 | 6 | 40 |
Opera 11 | 6 | 35 |
iPhone 4 | 4 | 30 |
Android 3 | 6 | 35 |
BlackBerry 7 | 5 | 5 |
Opera Mobile | 2 | 6 |
The data has been provided by Browserscope, a community-driven project for profiling web browsers. The goals of Browserscope are to foster innovation by tracking browser functionality and to be a resource for web developers.
Every web developer can participate in the Browserscope project by gathering test results from users “in the wild”. The project was launched in September 2009. The owner’s of the project are Lindsey Simon and Steve Souders.
More informations about concurrent (simultaneous, parrallel) browser connections are available at the following links :
- K. Scott Allen : A Software Developer’s Guide to HTTP Part III–Connections