HTTP/Conexiones/Conexiones paralelas
La mayoría de los navegadores web, no realizan sus conexiones en serie o una a una. En lugar de ellos, se abren varias conexiones paralelas a un servidor. Por ejemplo, cuando la descarga del código HTML de una página del navegador puede ver dos <img> en la página, por lo que el navegador tiene abiertas dos conexiones paralelas para descargar las dos imágenes al mismo tiempo. El número de conexiones en paralelo depende del agente de usuario y la configuración del agente.
Durante muchos años el navegador más popular, fue Internet Explorer (IE) 6, y este navegador obedecía a las reglas mencionadas en las especificaciones HTTP 1.1, que establece:
“Un cliente de un solo usuario no debe mantener más de 2 conexiones con cualquier servidor o proxy”.
Por esta misma razón el criterio fue instaurado y durante su tiempo de popularidad y uso, solo serían 2 el número máximo de conexiones en paralelo de un navegador. Sin embargo, muchos sitios web, se daban a la tarea de realizar algunos trucos para aumentar el número de descargas paralelas. Por ejemplo, el límite de dos conexiones es per host, es decir, un navegador como Internet Explorer 6 fácilmente hace dos conexiones en paralelo a www.google.com, y dos conexiones paralelas a imágenes.google.com. Mediante el hosting de imágenes en diferentes servidores, los sitios web podrían aumentar el número de descargas paralelas y hacer que sus páginas se cargasen de manera más rápida (incluso si los registros DNS eran creado para señalar las cuatro peticiones al mismo servidor, debido a que el límite de dos conexión es por host nombre, no la dirección IP).
En la actualidad este concepto ha cambiado y ahora la mayoría de los sitios web utilizan habilidades heurísticas para decidir el número de conexiones paralelas a establecer. Por ejemplo, Internet Explorer 8 se abrirá hasta con seis conexiones simultáneas.
HTTP permite a los clientes abrir múltiples conexiones y realizar múltiples transacciones HTTP en paralelo.
Páginas compuestas de objetos incrustados pueden cargar más rápido si se aprovechan de los límites de tiempo y ancho de banda muerta de una única conexión. Los retrasos se pueden superponer, y si una única conexión no satura el ancho de banda de Internet del cliente, el ancho de banda no utilizado pueden ser asignados a la carga de objetos adicionales.
La página HTML que encierra se carga por primera vez, y luego los tres restantes transacciones se procesan simultáneamente, cada uno con su propia conexión. Debido a que las imágenes se cargan en paralelo, los retardos en la conexión se solapan.
A pesar de que un navegador web soporto varias conexiones paralelas a la vez, la verdadera pregunta es saber ¿qué cantidad de conexiones son demasiadas? Esta pregunta corresponde a que las conexiones en paralelo obedecen a la ley de los rendimientos decrecientes, es decir, que demasiadas conexiones pueden saturar y congestionar la red y pueden perjudicar el rendimiento, sobre todo cuando los dispositivos móviles o redes no confiables son los involucrados.
Un servidor, solo puede aceptar un número finito de conexiones, así que si 100.000 navegadores crean simultáneamente 100 conexiones a un solo web 35 servidores, ocurrirán cosas malas. Aun así, el uso de más de una conexión por agente es mejor que descargar todo de una manera en serie.
Afortunadamente, las conexiones en paralelo no son la única optimización del rendimiento.
Un gran número de conexiones abiertas puede consumir una gran cantidad de memoria y causar problemas de rendimiento de su cuenta. Páginas web complejas pueden tener decenas o cientos de objetos incrustados. Los clientes pueden ser capaces de abrir cientos de conexiones, pero pocos servidores web van a querer hacer eso, porque a menudo están procesando las peticiones de muchos otros usuarios al mismo tiempo. Un centenar de usuarios simultáneos, cada abertura 100 conexiones, se ha puesto la carga de 10.000 conexiones en el servidor. Esto puede causar desaceleración significativa del servidor. La misma situación se aplica a los proxies de alta carga.
En la práctica, los navegadores utilizan conexiones en paralelo, pero limitan el número total de conexiones en paralelo a un número pequeño (a menudo cuatro). Los servidores son libres para cerrar las conexiones excesivas de un cliente en particular.