Ventajas del protocolo HTTP/2
Hoy es un gran día ya que finalmente se ha completado el estándar HTTP/2 para pasar una revisión por la RFC Editor y que finalmente sea publicado como un estándar funcional y listo para su uso. Después de ver esta noticia, me he entrado la curiosidad de conocer un poco más que ventajas va a ofrecer a los usuarios el nuevo protocolo HTTP/2 y será lo que trataré de explicar en este artículo.
Todo esto que parece tan sencillo ha necesitado nada más que dieciséis años para que sea una realidad y se diese el paso del estándar HTTP/1.1 al estándar HTTP/2.
El principal problema del protocolo HTTP/1.1 es que sólo permite una petición por cada conexión TCP. Para tratar de solucionar esto, los navegadores trataron de realizar varias peticiones en paralelo estableciendo varias conexiones TCP simultáneas, pero esto también es contraproducente porque se termina por congestionar la red. Resumiendo, se podría decir que si se hacen demasiadas peticiones HTTP/1.1, se termina por disminuir el rendimiento.
Para mejorar el rendimiento, seguro que a más de uno os suenan las “buenas prácticas” a la hora de crear páginas web del tipo: crear sprites para las imágenes, insertar código javascript directamente en el código HTML, concatenar recursos, etc.
Una vez conocidos los problemas del protocolo HTTP/1.1 se comenzó a desarrollar el protocolo HTTP/2 basándose en el protocolo SPDY creado por Google. Al mismo tiempo, Google anunciaba que daría soporte al nuevo protocolo HTTP/2 abandonando SPDY.
Ventajas del protocolo HTTP/2
- Es un protocolo binario en lugar de hacerlo en modo texto.
- Es multiplexado, permite responder a varios peticiones al mismo tiempo.
- Usa compresión en las cabeceras HTTP (en el protocolo HTTP/1.1 se empleaba texto sin comprimir).
- Permite a los servidores enviar al cache aquellos recursos que se consideran necesarios para la carga de una página web.
Examinemos ahora cada una de las ventajas por separado. En primer lugar vemos que HTTP/2 funcionará de forma binaria en lugar de emplear texto, esto es una ventaja porque trabajando en binario lo hace de una forma más compacta y sin inconvenientes como el uso de mayúsculas/minúsculas, espacios en blanco, caracteres de final de línea, etc.
Con la multiplexación queda claro que se reducirá el número de conexiones disminuyendo así la carga en los servidores web y mejorando considerablemente la velocidad carga.
Hasta ahora las cabeceras de las peticiones HTTP/1.1 eran texto plano, sin ningún tipo de compresión, pero con el tiempo estas cabeceras han ido aumentando de tamaño por el uso de cookies, los user-agent de los navegadores y un largo etcétera de cabeceras. Con la compresión de las cabeceras se consiguen mejores tiempos de respuesta y mejora la eficiencia sobre todo en dispositivos móviles. Para la compresión de las cabeceras se ha empleado el algoritmo HPACK ya que GZIP no era lo suficientemente seguro.
Hasta ahora, en primer lugar se descarga el código HTML de las web y se procesa para realizar las peticiones a los recursos CSS, Javascript, imágenes, etc. Con el nuevo mecanismo de “Server Push”, se permite a los servidores enviar al cache aquellas respuestas que considera necesarias reduciendo así el tiempo de carga.
Como podemos ver, las mejoras no son pocas y esperemos que pronto el protocolo HTTP/2 sea el más usado para que pueda seguir evolucionando. En el momento de escribir el artículo, los navegadores Chrome y FireFox ya incluyen soporte para HTTP/2, pero parece que los servidores web de momento sólo soportan el viejo protocolo SPDY pero no el nuevo HTTP/2 (imagino que esto cambiará en breve).
Podéis consultar el FAQ oficial del protocolo HTTP/2.