Clicky

HTTP2 - el futuro de la web ya casi está aquí

Protocolo de transferencia HTTP/2

El protocolo que usamos todo el tiempo para navegar es todavía del milenio pasado

HTTP no es sólo un prefijo al azar que se introduce antes del nombre de dominio en la barra de direcciones de tu navegador; es uno de los bloques más importantes de construcción de la Internet. El Protocolo de Transferencia de Hipertexto - Hypertext Transfer Protocol (HTTP) - es un protocolo para la World Wide Web (WWW) diseñado para facilitar la comunicación entre el cliente, que en la mayoría de los casos es sólo tu navegador, y el servidor. Si la web es el depósito donde se almacena la información, a continuación, HTTP es el protocolo que proporciona la puerta, por así decirlo. Y ahora, por fin, está en camino un nuevo protocolo HTTP.

Conoce su historia

Si quieres saber por qué HTTP/2 es una cosa muy importante, primero hay que entender algo acerca de su predecesor - el protocolo HTTP. La versión 1.0 de este protocolo se introdujo hace muuuuucho tiempo, en 1996, cuando la mayoría de nosotros todavía estábamos luchando en la escuela hace casi 20 años! Sin embargo esto no es realmente lo que estás utilizando actualmente en tu navegador; cuando se escribe una dirección URL en la barra de direcciones se utiliza el ligeramente más moderno protocolo HTTP/1.1, que fue anunciado en 1999 . Esto todavía hace más de 15 años, sin embargo, estoy seguro que has notado que la web ha evolucionado bastante desde los días de los gifs y Geocities. Echa un vistazo a la forma enque google.com mira hacia atrás antes de Y2K destruyó la civilización tal como la conocemos:

Google beta 1999

Sí, la WWW ha evolucionado tanto que incluso Google ya no está en beta :-) pero el protocolo que usamos todo el tiempo para navegar es todavía del milenio pasado. Si eres un fanático de la nostalgia puedes utilizar la Internet Archive Wayback Machine para comprobar cómo han cambiado los sitios web con los años; desde luego puedes esbozar una sonrisa cuando vea una de mis páginas (Vista al Mar) en el 2007!

¿Por qué hacer el cambio?

Así que nos las hemos arreglado para salir adelante durante los últimos veinte años con un HTTP antiguo, así que ¿por qué tenemos que cambiar ahora? La mayor limitación de HTTP/1.1 es la forma en que el navegador puede enviar peticiones al servidor. Cada recurso de un sitio web, como imágenes individuales, archivos JavaScript o hojas de estilo CSS, solo se puede solicitar uno a la vez por conexión, por lo que el navegador pierde mucho tiempo esperando cada solicitud. Realiza una prueba o dos a través de la página Pingdom Website Speed Test, donde se puede obtener una vista previa del tiempo de respuesta del servidor para cada recurso, y te darás cuenta de que hay un montón de tiempo vacío que puede ser utilizado con un protocolo más robusto.

Pero ¿seguro que puedes tener una petición por conexión y, a continuación, varias conexiones que se hagan cargo del problema? Bueno, aquí es donde vienen una vez más las limitaciones del protocolo HTTP/1.1; la documentación oficial para el protocolo HTTP/1.1 sólo permite dos conexiones abiertas a la vez, así que puedes tomar dos recursos independientes en un momento dado. Dos bien pueden ser mejor que uno, pero cuando la media de un página web crea más de 30 solicitudes está claro que va a ser un poco de cuello de botella. No es que no se hayan hecho intentos para superar estas limitaciones; los navegadores intentan saltarse este límite (se puede leer más sobre esto en esta entrada de blog) y la mayoría de los navegadores modernos permiten abrir un máximo de 6 conexiones en paralelo en el mismo servidor. Sin embargo, esta solución es ineficiente en comparación con el soporte para el protocolo nativo para múltiples solicitudes, por lo que HTTP/2 es la progresión lógica necesaria para que siga evolucionando la web.

¿Qué esperar de HTTP/2?

HTTP/2 es, obviamente, como su nombre indica, una actualización para el protocolo HTTP con el objetivo principal de crear una capa de protocolo de transferencia más eficiente para acelerar el proceso de entrega de contenido en la web. La idea básica es que en lugar de abrir múltiples conexiones en la que cada una proporciona una única línea, restringiendo la comunicación, HTTP/2 sólo creará una conexión con el servidor y, a continuación, multiplexará muchas peticiones más, en lugar de una sola conexión segura abierta. Esto significa que el navegador ya no tiene que esperar hasta que las solicitudes existentes terminen antes de iniciar otras nuevas, y en su lugar puede transmitir múltiples respuestas al mismo tiempo. Esto significa que si el servidor se queda atascado en una petición no tendrá que esperar a que se resuelva antes de que se cargue el resto de la página.

El segundo gran cambio en HTTP/2 es una solución llamada "Push Server", que es bastante similar en métodos ya utilizados en los clientes de correo electrónico. Esta característica permite que el servidor envíe algunos datos a tu cliente (navegador) antes de que se formule la solicitud, lo que se traducirá en que la página cargue más rápido que nunca.

El alto rendimiento del protocolo HTTP/2 hace que sea mucho más fácil trabajar con una conexión cifrada (que no se requiere en la documentación oficial), tanto los navegadores Firefox y Chrome tienen compatibilidad actualmente con HTTP/2, pero sólo cuando se utiliza TLS (Transport Layer Security ; un sucesor de SSL) por lo que, como consecuencia, se debe esperar que la seguridad global sitio web será mejor con este nuevo protocolo.

¿Puedo utilizar HTTP/2 en este momento?

Probablemente el navegador líder en la implementación de HTTP/2 es actualmente Internet Explorer, que ha apoyado este protocolo desde Windows 10 Technical Preview. Por supuesto Chrome admite antes el protocolo SPDY, que era un punto de partida para el protocolo HTTP/2, pero se ha anunciado que el soporte completo se incluirá en la última versión de Chrome Canary anunciado el 17 de marzo de 2015. Si ya tienes un navegador con soporte HTTP/2 entonces puedes explorar algunas páginas que ya utilizan este protocolo como HTTP2Rulez! y comparar el tiempo de carga de la página - y realmente vas a ver la diferencia! También parece que todavía tiene que ser revertidas la mayoría de optimizaciones que ya forman parte del front-end del desarrollador, pero sin duda será algo nuevo para mejorar incluso con un nuevo y brillante protocolo HTTP/2.

Optimizaciones Front-end para HTTP/1.1 limitaciones

Por ahora, estamos atascados con HTTP/1.1 hasta que HTTP/2 se vuelve más generalizado y soportado Mientras tanto, echemos un vistazo a algunas optimizaciones simples que puedes utilizar para obtener tu sitio web corriendo un poco más rápido. Te darás cuenta de que la mayoría de las técnicas de mejora de velocidad se centran en saltarse el principal inconveniente de HTTP, que es la cantidad de solicitudes paralelas.

Sprites de imagen reemplazan múltiples imágenes con una que contiene todas las imágenes de la página en un solo paquete para evitar múltiples solicitudes. Combinar CSS es una técnica en la que todas las hojas de estilo en cascada se combinan en un solo archivo CSS para minificar la cantidad de peticiones al servidor. Puedes lograr el mismo resultado combinando JavaScript y por supuesto todas las minificaciones técnicas que permite disminuir el tamaño de la petición. Puedes agregar a tu archivo .htaccess encabezados de Cache-Control, que definen cómo tu navegador debe almacenar en caché los tipos de archivos particulares que como un resultado pueden ser utilizados para disminuir efectivamente la cantidad de solicitudes en los procesos de recarga de la página. Con una Content Delivery Networks, también conocida como CDN, se guardan los archivos en diferentes servidores para difundir las solicitudes entre múltiples conexiones y evitar las limitaciones tradicionales.

Sólo recuerda: con el advenimiento de HTTP/2 la mayoría de estas técnicas ya no serán necesarias, para que puedas disfrutar de un brillante futuro de Internet de alta velocidad.

Jesus_Caceres