Aumentar la velocidad del navegador saltandose los estandares

Me estaba bajando las herramientas correspondientes a las versiones de 64-bit (x64) que mencionaba en el post anterior y me he dado cuenta de que en el IE7 de Windows Vista todavía no he metido las entraditas del registro que te permiten descargar más de dos archivos simultánemente.

En el RFC 2868 se especifica:

Clients that use persistent connections SHOULD limit the number of simultaneous connections that they maintain to a given server. A single-user client SHOULD maintain AT MOST 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 of the Internet or other networks.

La razón por la que se decide recomendar esta implementación está tambien explicada en el propio documento:

Prior to persistent connections, a separate TCP connection was established to fetch each URL, increasing the load on HTTP servers and causing congestion on the Internet. The use of inline images and other associated data often requires a client to make multiple requests of the same server in a short amount of time.

Es decir, si no limitamos el número de conexiones persistentes que un cliente puede hacer a un servidor web dado, este intentaría abrir una conexión TCP para cada peticion http de cada objeto incluido en la pagina web que estemos visitando. Para un servidor la apertura de una conexión TCP supone el uso de una cierta cantidad de recursos de procesador y memoria, además de los que se agoten por las operaciones que supongan el uso de dicha conexión por los protocolos de capas superiores.

Siguiendo el estándar, el navegador usará exclusivamente dos conexiones TCP simultáneas por las que irá descargando los diferentes objetos que conforman el contenido de la página. El efecto que esto produce es que si lo que estamos haciendo es descargándonos archivos o visualizando imágenes de gran tamaño, las últimas parecen quedarse "colgadas" (rigurosamente hablando "encoladas") hasta que no hayan terminado las dos anteriores.

El número máximo de conexiones concurrentes está gobernado por dos entradas del registro que cuelgan de la misma clave en

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings

Nombre de valor: MaxConnectionsPer1_0Server
Tipo: REG_DWORD
Valor máximo: 10 (Decimal)

Nombre de valor: MaxConnectionsPerServer
Tipo: REG_DWORD
Valor máximo: 10 (Decimal)

Como dice el KB282402, en el que se explica esto mismo, no se recomienda incrementar estos valores para ser usados fuera de redes privadas en las que la modificacion haya sido tenida en cuenta a la hora de dimensionar servidores. Haciendo una cuenta aproximada, si ponemos 10 conexiones simultáneas podríamos decir que estaríamos constándole a un servdor Web el trabajo equivalente a 5 clientes sin modificar. Por otro lado, en mi pasado vimos algunos porblemas en desarrollos de aplicaciones web cuando este valor sobrepasaba una cierta cantidad al llevarse a cabo procesos en paralelo que estaban pensados para funcionar en serie. Si bien es algo raro, mi recomendación es modificar los valores solamente si experimentamos retrasos demasiado molestos en nuestras navegaciones habituales, y recordar eliminar los valores como primer paso a la hora de resolver alguno de esos problemas raros en nuestra página favorita.

Y por último, una nota para usuarios de Firefox. Esto aplica exactamente igual. Teclead about:config y filtard por network.http.max para localizar los valores equivalentes.

Saludos