As defined in 1999 (RFC 2616) “clients that use persistent connections should limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD NOT maintain more than 2 connections with any server or proxy. A proxy SHOULD use up to 2*N connections to another server or proxy, where N is the number of simultaneously active users. These guidelines are intended to improve HTTP response times and avoid congestion.” Since developers are using AJAX or AJAX-like requests to update a Web page the http limits are discussed more and more.
Currently WinInet limits connections per server with a registry setting (for both, http 1.1 and 1.0). You can simply change the value and have the possibility to connect to more than one server at the time. Other Web browser have limited the concurrent connections to other values. Opera lets you change the value through the Preferences dialog box, look under Advanced –> Network. Firefox users just type about:config in the address bar and hit enter. Then type connections into the filter field. The setting your looking for is network.http.max-persistent-connections-per-server.
Now, Internet Explorer 8 changes the maximum number of concurrent connections:
|Version ||HTTP 1.0 server (broadband) ||HTTP 1.1 server (broadband) ||HTTP 1.0 server (narrowband) ||HTTP 1.1 server (narrowband) |
|Internet Explorer 7 and earlier ||4 ||2 ||4 ||2 |
|Internet Explorer 8 ||6 ||6 ||4 ||2 |
What does this mean for end-users? Well, it is much easier for a client to initiate more than two downloads (in the past you had to open Internet Explorer again to start a new instance to get two more connections). You may expect higher number of downloads at the same time instead of several two-paired downloads on your Web server.
Internet Explorer 8 includes two new read-only properties of the window object that enable your server to determine the number of available connections on the client computer: window.maxConnectionsPerServer (http 1.1) and window.maxConnectionsPer1_0Server (http 1.0).
Read more details at Connectivity Enhancements in Internet Explorer 8 (MSDN), IE8: The Performance Implications, Testing IE8’s Connection Parallelism, IE8: Better Ajax, CSS, DOM, and new features.
Update: there is another new property, the XMLHttpRequest’s timeout. With the timeout property, Web developers can specify the length of time in milliseconds for the host to wait for a response before timing out the connection. I’m very sure that this new property and the event timeoutRaised will be added by the Firefox developers very soon.