Hypertext Transfer Protocol

Buenas prácticas y características clave de HTTP/2

Desarrollo Web 6 min. de lectura

HTTP (Hypertext Transfer Protocol) es el protocolo que gobierna todas las conexiones entre un servidor y un navegador. Definido en 1991 y revisado en 1999, este año presentó su primera actualización en 17 años. HTTP/2 nos trae mejoras en performance, seguridad y prepara la web para futuras aplicaciones.

El protocolo HTTP fue definido originalmente en 1999 y revisado en 1999 con su versión HTTP/1.1.

Este protocolo controla la manera en la cual los servidores y clientes manejan las conexiones entre ellos, definiendo, por ejemplo, el número de conexiones simultáneas a un solo dominio o en qué formato deben llegar las cabeceras de cada consulta.

A medida de que las aplicaciones web fueron evolucionando, el protocolo HTTP/1.1 ha ido quedando atrás, ya que tiene una gran cantidad de problemas al momento de buscar una gran cantidad de recursos a la vez.

Debido a que la web se ha poblado de aplicaciones complejas que requieren muchos recursos, este problema se ha ido agudizando con el tiempo.

SPDY, protocolo complementario a HTTP

En el año 2009, dos ingenieros de Google comenzaron a trabajar en SPDY. Este proyecto se encargó de mejorar y corregir algunos de los problemas de HTTP/1.1, entre los que se encontraban:

  • Permitir consultas concurrentes dentro de una sola conexión TCP, propiedad conocida como multiplexing.
  • Permitir a los navegadores priorizar las consultas por recursos que son vitales para visualizar una página.
  • Comprimir las cabeceras HTTP.

Si bien SPDY no es un reemplazo para HTTP, este sirve como un túnel para el protocolo que modifica la manera en que las consultas HTTP se manejan y se envían.

Es necesario recordar que para que SPDY pueda funcionar correctamente requiere de una conexión encriptada (HTTPS) entre el navegador y el servidor y contar con soporte tanto del navegador como del servidor.

image01

Tabla de soporte de navegadores para el protocolo SPDY (Agosto 2016)

Protocolo HTTP/2

A partir de febrero de 2015, fecha en la que fue finalizada su especificación, HTTP/2 ha ido ganando soporte de los navegadores gracias al éxito de SPDY, mientras que éste último, en función del nuevo protocolo, ha ido restando soporte.

image02

Tabla de soporte de navegadores para el protocolo HTTP/2 (Agosto 2016)

A pesar de que el soporte de los navegadores está en alza, también es necesario revisar el soporte de los servidores web e identificar su avance. Para confirmar el estado del soporte se puede consultar la lista completa del estado de las implementaciones.

Características clave de HTTP/2

Dentro de las características que ofrece el nuevo protocolo, las más importantes, en comparación con HTTP/1.1, son:

  • Protocolo Binario: HTTP/2 es un protocolo binario a diferencia de su predecesor, el cual era un protocolo de texto. Esto significa que las consultas pueden manejarse de una manera mucho más eficiente, tanto por los navegadores como por los servidores.
  • Multiplexing: El soporte de multiplexing significa que este protocolo puede manejar, enviar y recibir múltiples consultas a través de la misma conexión optimizando la performance.
  • Compresión de cabeceras: HTTP/2 maneja las cabeceras usando el algoritmo HPACK el que permite una compresión óptima.
  • Server Push: Esta característica permite a un servidor enviar recursos al cliente incluso cuando este no ha explicitado una consulta, permitiendo que el servidor anticipe los recursos que el cliente va a requerir en el futuro mejorando la velocidad y el performance de las aplicaciones.

Moviéndose hacia HTTP/2

Dentro de los aspectos más interesante para los desarrolladores, está el hecho de que lo considerado como buenas prácticas en HTTP/1.1 se convierten en antipatrones en HTTP/2.

Las prácticas consideradas buenas, como la concatenación de archivos y el uso de sprites pensados para ahorrar consultas HTTP, no sólo se vuelven innecesarias en HTTP/2, sino que pueden ralentizar nuestros sitios y aplicaciones.

Antes de dar el paso a HTTP/2, te recomendamos prestar atención a lo siguiente:

  • Pasar a TLS: Uno de los requerimientos más importantes es el pasar la aplicación web a una conexión segura, ya que esto es un requerimiento del protocolo. Esto no solo es útil para HTTP/2, sino que Google considera los sitios con conexión de mejor forma a la hora de rankear en los resultados.
  • Sprites: Dentro de las buenas prácticas dentro de HTTP/1.1 se encuentra la de juntar todas las imágenes del sitio en una sola, reduciendo el número de consultas HTTP hacia el servidor. Con la habilidad de multiplexing en HTTP/2 esta acción se vuelve innecesaria, pues las consultas HTTP están optimizadas para llevar múltiples recursos, lo que nos permite dejar esta práctica en el olvido.
  • Concatenación de scripts y hojas de estilo: Al igual que en el punto anterior, esta práctica se vuelve obsoleta. Debido a que con el nuevo protocolo es preferible separar los archivos con el fin de que los navegadores puedan priorizar de manera más eficiente los recursos que carga desde el servidor.

Considerando que implementar HTTP/2 a nivel de servidor es relativamente sencillo y que la gran mayoría de las implementaciones ofrecen fallback para el protocolo anterior, es de esperar que los sitios, hostings y servidores comiencen a adoptar HTTP/2 en poco tiempo.

Esto significa que los desarrolladores tendrán que aprender a manejar apropiadamente el nuevo set de buenas prácticas, preparando la web para un futuro que será cada vez más sofisticado en tecnología.

Finalmente, si quieres investigar con mayor profundidad los detalles y cambios de este protocolo, puedes revisar más información en el sitio oficial de HTTP/2.

Acerca del Autor

Investigamos las tendencias en proyectos y estrategias digitales para complementarlas con nuestra experiencia en artículos informativos. Nuestro objetivo es aportar al desarrollo del área, discutiendo la efectividad de las tecnologías y técnicas aplicadas.

Agregar un comentario