Desde 1991 con la versión 0.9 HTTP (HyperText Transfer Protocol) hemos podido acceder a millones de recursos en la Internet lo que conocemos como World Wide Web o simplemente Web.
¿Cómo funciona el protocolo HTTP?
El protocolo HTTP funcionana como un sistema de comunicación de doble vía (ej. el teléfono), la diferencia es que no es paralela, es decir, en HTTP se hace un llamado “request” y se recibe una respuesta “response”. Algo parecido a enviar un correo preguntando por algo y luego recibir la respuesta a nuestro correo; pero en este caso lo hace el ordenador cliente directamente con el servidor con la simple primera llamada del cliente o “request”.
Por lo general la respuesta del servidor viene como un documento estructurado con HTML (HyperText Marckup Language), también puede ser una imagen o un video o cualquier otro recurso del servidor al que tenemos acceso vía el protocolo HTTP.
HTTP 1.1
Es en 1999 cuando, luego de ciertas mejoras y mejor entendimiento de las capacidades de este protocolo que hemos estado utilizando, se estandarizó entre los navegadores “browser” de la época. Desde entonces la web ha evolucionado mucho. Los sitios web han incrementado la cantidad de recursos para compartir. El maquetado o HTML ha evolucionado también. Este último ha evolucionado de tal manera que hoy en día podemos disfrutar de nuevas formar de consultar, compartir e interactuar con el contenido de los sitios web.
Esta evolución de los navegadores y del HTML a forzado a mejorar la forma en que se establece la comunicación cliente – servidor para poder manejar la enorme cantidad de recursos disponibles hoy día en un sólo sitio web.
Con HTTP 1.1 los desarrolladores hemos creado un sin numero de formas para adaptarnos a los avances en el lenguiaje HTML y la forma en como los sitios web interactuan con el cliente o usuario para sobrellevar las limitaciones del protocolo.
Por ejemplo, el uso de imágenes sprite para obtimizar la carga de elementos visuales haciendo un solo consulta a un recurso en vez de cargar las imágenes por separado. Siendo esto que HTTP 1.1 debe esperar de forma sincronizada que los elementos carguen uno por uno sin prioridad, solo por el orden en que aparece en nuestro documento HTML.
Otro ejemplo es el uso de CDN o “Content Delivery Network” donde podemos cargar varios elementos al mismo tiempo empleando una ténica de direccionamiento segmentado, es decir, crear diferentes direcciones web para consultar varias de estas a la misma vez para cargar varios elementos de nuestro sitio web sin tener que esperar que el servidor las cargue una a la vez.
HTTP/2
HTTP/2 o HTTP 2.0 es un reemplazo o actualización del protocolo existente cuyo objetivo es mejorar el desempeño de los sitios web. Los métodos (GET, POST, PUT, etc) siguen siendo los mismos. De igual forma los códigos de estatus (200 OK, 404 Not Found, etc), lo mismo con la semántica. Aunque su implementación requiera ciertos ajustes por parte de los navegadores que son ciertamente invisibles para el usuario; pero para nosotros los desarrolladores son un respiro para mejorar nuestros sitios web y la interección con los usuarios clientes.
Para este año 2016, los estándares de HTTP/2 han sido finalizado y algunos de los navegadores web más populares ya soportan el nuevo protocolo.
Los beneficios que presenta HTTP/2 incluyen:
- Multiplexación y concurrencia: Esto significa que varias solicitudes pueden ser enviadas al servidor simultáneamente pro medio de la misma conexión TCP y la respuesta puede ser recibida sin orden, eliminando la necesidad de múltiples conexiones entre el cliente y el servidor, por ende, menos uso de recursos físicos del servidor como la Memoria.
- Dependencias de Transferencia: Podemos indicar en las páginas web por medio de propiedades de etiquetas de maquetado (HTML) cuales recursos son más importantes y cómo queremos que el cliente las descargue.
- Compresión de cabeceras: La cabecera HTTP ha sido reducida dramáticamente. Cuando consultamos un sitio web, la respuesta de este incluye información que le indican al navegador como responder, código de respuesta, parámetros, métodos permitidos, entre otros. Toda esta información ha sido comprimida de forma que la respuesta es mucho más rápida y permite tomar decisiones antes de presentar el contenido al cliente con más anticipación.
- Push: Ahora el servidor puede enviar recursos al cliente sin que este aún lo solicite.
No es necesario hacer cambios a nuestros sitios web o aplicaciones para que continúen funcionando correctamente. Tu sitio o aplicación simplemente funcionarán mejor, rápido y consumiendo menos recursos tanto en el servidor como en el cliente.
Para ver toda la información sobre HTTP/2 puedes visitar este sitio (HTTPbis Working Group) en idioma inglés que inluye las especificaciones, definiciones y referencias.