La Web tiene hoy 25 años y la forma que tienen los navegadores de hablar con la página web, el protocolo HTTP, no ha cambiado mucho desde entonces. Sí ha cambiado, sin embargo, el modo en que usamos la Web, y es ahí donde las limitaciones de HTTP/1 ya comienzan a notarse. Las páginas se cargan más lentamente de lo que deberían y el uso de la red es demasiado ineficiente y esto ocurre porque HTTP/1 solo permite enviar una petición por conexión TCP cada vez.
El hecho de que las páginas web modernas a menudo necesiten hacer más de un centenar de peticiones para cargar JavaScript, CSS e imágenes representa un gran problema. Hoy en día los navegadores utilizan varias conexiones por página para poder descargar todos estos activos, pero no pueden usar demasiadas porque ello sobrecargaría la red, lo que congestionaría los datos aún más, de modo que suelen utilizar entre cuatro y ocho conexiones, con respecto a lo que se estima el número de peticiones que se tienen que enviar en cada una, algo que a veces da lugar a errores.
El gran número de peticiones de una página web también origina otro problema: cada petición incluye un set de cabeceras de HTTP que ha ido creciendo con el tiempo gracias a elementos como las cookies y que pueden aumentar la cantidad de datos que se envían. En las redes móviles de alta latencia esto tiene un impacto muy significativo en el rendimiento. Todo esto ha hecho que HTTP/1 sea lento y cada vez más difícil de usar. Muchas páginas web intentan enfrentarse a este problema dando ciertos rodeos, usando técnicas como el CSS printing, el inlining y la concatenación, que, si bien ayudan, también son una señal de que las cosas pueden hacerse mejor.
Es por todo esto que en 2012 se comenzó a trabajar en HTTP/2. Este nuevo protocolo, basado en el proyecto Speedy, permite utilizar una conexión para toda la comunicación entre tu navegador web y una página web. Esto se lleva a cabo dividiendo los mensajes de petición y de respuesta en pequeños bloques que se denominan “frames” y etiquetándolos, de modo que se puedan volver a ensamblar cuando lleguen al receptor. Este proceso de denomina multiplexación y permite usar una red de una forma mucho más eficiente, ya que se pueden enviar varios mensajes a la vez, a diferencia de con HTTP/1. Adicionalmente, HTTP/2 también permite comprimir las cabeceras, ahorrando al ancho de banda una gran cantidad de información redundante. Esto es lo que hace posible cargar páginas mucho más rápido, porque, aun teniendo que realizar un gran número de peticiones, como hacen muchas, estas tardan menos en recorrer la red. Otro tipo de optimizaciones, como el server push, facilitan que una página envíe respuestas incluso antes de que el navegador las necesite, lo que, de nuevo, mejora el rendimiento.
Los primeros resultados indican que el simple cambio a HTTP/2 permitirá en la mayor parte de los casos una mejora del rendimiento de entre un cinco y un cincuenta por ciento, algo sustancialmente superior con algunos ajustes. Es importante saber que el nuevo protocolo no modifica aspectos como los métodos HTTP. Las cabeceras o los códigos de estado que usan las API de HTTP no cambiarían mucho y, como se puede usar sobre la base del transporte hop-by-hop, no hay que actualizar toda la infraestructura al mismo tiempo.
HTTP/2 está casi listo y pronto ha de estar soportado por navegadores tan populares como Firefox, Internet Explorer y Google Chrome. También Akamai soportará HTTP/2, llevando al nuevo protocolo a una gran parte de la Web.