Antes de continuar con esta crónica, ayúdame respondiendo la siguiente pregunta:
¿Cuál de las siguientes oraciones se acerca más a lo que pensaste al leer el título de la crónica?
1) ¿Versión 2? Mejor habla de Web 3.0
2) ¿HTTP tiene versiones?
3) Llegas tarde al tema, esto es noticia de 2015
Dos de las respuestas de la encuesta expuesta arriba llevan una verdad. HTTP sí tiene versiones y, en efecto, es una noticia de 2015. El asunto del «Web 3.0» nada tiene que ver aquí, si bien, en su momento lo abordaremos en otra crónica.

Anque es un tema de hace siete años (siendo 2022 cuando esta crónica se escribe) me he sorprendido gratamente al conocer más acerca de este protocolo cuyo nombre el mundo repite cuando habla de sitios web, pero que no capta su atención más allá.
La información detallada, tanto del protocolo como de la historia del mismo, la podrán encontrar en la MDN:
En algún momomento (ya llegará si aún no es así) seguramente habrás tenido que revisar la respuesta que te entrega un servidor web o servidor de aplicaciones despachando contenido o funcionalidad a través del protocolo HTTP.
Diagnosticar qué está pasando cuando alguna tecnología de servidor (.Net, PHP, Java EE, Python, Javscript, etc) o web services te llevará tarde temprano a ver lo que el servidor te responde. Miremos la vista de desarrollo de Chrome/Edge al navegar a la página de búsqueda de Google:

Veamos ahora en SOAP UI, una petición a un servicio web SOAP gratuito, que convierte un número en su equivalente en texto (es decir 1001 devolverá «Mil uno», en inglés). Puedes encontrar su definición aquí:

En el lado izquierdo de la ventana está la petición, si hacemos click en la pestaña Raw, podemos acceder a la petición que se hizo mediante el protocolo HTTPS:

En esta segunda captura de pantalla vemos el mismo mensaje XML en la parte inferior, pero arriba vemos texto que no se aprecia en la primera pantalla, ¿Qué es eso? Son los headers del protocolo, y un punto particular, asociado a esta crónica está en la primera línea:

En las capturas de pantalla con señalamientos vemos:
- h2
- HTTP/1.1
¿Qué indican estos textos? Que la página de búsqueda de google se está despachando usando HTTP versión 2 y que el servicio web, se está solicitando y respondiendo usando HTTP 1.1.
No es mi intención transcribir aquí lo que está perfectamente explicado en la página de MDN, pero sí haré una síntesis personal para la crónica:
- Yo no sabía que existía una versión 2, aunque estaba al tanto de la 1.1
- HTTP parte desde 1990 con una versión 0.9, etiquetada así para fines históricos, evolucionando a 1.0 y posteriormente a 1.1, siendo esta última la que ha estado mayormente vigente por más de 15 años y a la fecha.
- La versión 2 ha sido resultado de la estandarización de una tecnología propietaria propuesta de Google.
- Como lo hemos visto ahora con los ejemplos mostrados, las versiones 1.1 y 2 se encuentran vigentes y conviven sin problemas.
- Una de las mayores diferencias que hay entre cada versión es que las peticiones y respuestas de la versión 1.1 van en texto plano, es decir, uno puede ver, leer e incluso construir manualmente una petición y una respuesta HTTP, ya que se diseñó para ser legible por una persona; la versión 2 en cambio es puramente binaria, es decir, los mensajes no son texto plano, lo que hace ilegible sus mensajes al ojo humano.
- Por ser binaria, la versión 2 cuenta con muchas ventajas de funcionalidad que la hacen más veloz que su predecesora.
- Existe una versión 3 que se está trabajando.
- No tiene nada que ver con lo que llaman Web 3.0
¿Hay algún problema si quieres exponer algo usando HTTP2? Mientras tu cliente lo pueda interpretar, no lo hay.
¿Puedo experimentar con esa versión en un entorno de desarrollo personal? Sí. Creo que a la fecha, el servidor Web Apache sigue siendo lo más común, y la versión 2.4 de este servidor puede exponer su contenido usando HTTP2.
En la documentación técnica del servidor web encontrarás las instrucciones para hacerlo:
https://httpd.apache.org/docs/2.4/howto/http2.html
Usando XAMP para Windows, esto es bastante sencillo:
Abre el archivo de configuración httpd.conf y localiza y activa el módulo:

Activa el procolo añadiendo la línea:

Reinicia el servidor, el protocolo deberá estar activado. No están los pasos aquí, pero es importante tener en consideración que Apache no despachará usando HTTP2 si no es mediante HTTPS. Por lo que necesitarás crear y agregar un certificado.
Navegando a https://localhost vemos que todo el contenido (excepto un script de php) fue despachado usando HTTP2:

Si navegamos localmente usando HTTP, la versión 2 no se activa y se nos envía el contenido usando la versión 1.1:

Las referencias que se aprecian con h2 son recursos descargados de internet (por https), como font-awesome; el contenido local está siendo despachado por 1.1. Veamos:


Mis comentarios finales
¿Tiene alguna relevancia el usar una versión o la otra? Virtualmente no, porque como vimos, depende del cliente.
¿Es mejor la versión 2? Técnicamente sí.
¿Debería cambiar a la versión 2? Si puedes y tus clientes pueden consumir los recursos así, hazlo; encontrarás ventajas, particularmente una sensación de mayor velocidad, sobre todo si se está despachando contenido estático.

Responder a Ivan sin miedoCancelar respuesta