HTTP / 2 es una nueva forma de haciendo que su sitio web cargue mucho más rápido eliminando muchas ineficiencias asociadas con la versión actual de HTTP. Lo mejor de todo esto? No tiene que esforzarse demasiado para ponerlo en funcionamiento.

¿O usted?

¿Qué es HTTP / 2?

Cuando se desarrollaron originalmente HTTP1 y HTTP1.1, la web era muy diferente de lo que es hoy. Los sitios web tenían menos recursos (archivos JavaScript, archivos CSS, imágenes) que hoy. Las conexiones a Internet no fueron muy rápidas, y los usuarios no fueron muy exigentes con la velocidad de carga del sitio web.

Los usuarios comienzan a tener picazón en los dedos cuando un sitio demora más de 3 segundos para mostrar una respuesta.

Estabas contento de que un sitio web cargara por completo. Es posible que se haya quejado en secreto de que la carga era lenta. Pero realmente no podías hacer mucho al respecto. Esto se debe a que el tiempo de carga lenta generalmente provenía de factores que eran independientes del servidor web y la tecnología que estaba utilizando. En general, fue la conexión a Internet real, que fue el principal factor limitante.

Avance rápido hasta hoy. Los tiempos de carga del sitio web se miden en milisegundos en lugar de segundos Los usuarios comienzan a tener picazón en los dedos cuando un sitio demora más de 3 segundos para mostrar una respuesta. En este tipo de situación, las ineficiencias contadas en milisegundos asociadas con las versiones originales de HTTP comienzan a marcar una diferencia real. Es por eso que recibes tantos artículos discutiendo cómo hacer que tu sitio web sea más rápido . Porque milisegundos importan.

La nueva versión de HTTP, conocida como HTTP / 2 aborda problemas conocidos específicos de HTTP. Sus objetivos son abordar una serie de problemas que se han vuelto más pronunciados a medida que la web ha ido evolucionando hacia sitios web cada vez más grandes con muchos más archivos CSS, JS y de imágenes de lo que se anticipó originalmente.

¿Pero qué está mal con HTTP1.x, y por qué gastamos tanto esfuerzo haciéndolo más rápido?

Los problemas de HTTP1.x

HTTP1.x tiene una serie de problemas inherentes. En realidad, evitemos llamarlos problemas. HTTP1.x tiene varias formas en que puede ser más eficiente.

  1. HTTP 1.x está basado en texto: originalmente la idea era que HTTP1.x debería ser humanamente legible, por lo que estaba completamente basado en texto. Por definición, todos los protocolos basados ​​en texto tienen ineficiencias asociadas a ellos, como espacio en blanco, saltos de enlace, uso de mayúsculas, etc.
  2. Solo se transfiere un archivo en cualquier momento: este es uno de los mayores problemas con las versiones 1.x de HTTP. Imagínese ser un repartidor que solo puede entregar un paquete a la vez. Deben regresar a la base cada vez que necesiten entregar el próximo paquete.
  3. Cientos de solicitudes son necesarias para los sitios web de hoy en día: tener temas más sofisticados significa que el tamaño de los sitios web y la cantidad de recursos aumentan. Y también lo hace el tiempo que lleva cargar cada recurso. Recuerde que nuestro "repartidor" tiene que regresar a la base cada vez, ya que no pueden transferir más de un archivo a la vez.
  4. Cada conexión es una operación técnica pesada: dado que se requieren cientos de conexiones, comienza a acumular una sobrecarga importante. Con el tiempo de carga medido en milisegundos, el tiempo combinado requerido para crear una conexión para cientos de recursos comienza a ser muy significativo.

Muchas veces los diseñadores web tuvieron que implementar medidas específicas para reducir estas ineficiencias. Las soluciones temporales, como los sprites de CSS, la minificación y la combinación de archivos, están destinadas a resolver problemas con la carga de sitios web.

Estos son, en esencia, soluciones temporales en lugar de soluciones.

Cómo HTTP / 2 resuelve los problemas de HTTP1.x

HTTP / 2 está diseñado y evolucionado desde SPDY , un protocolo diseñado en Google destinado a hacer que la web sea 2 veces más rápida. Soluciona los problemas de HTTP de la siguiente manera

  1. HTTP / 2 está pensado para ser consumido por máquinas (su navegador web y el servidor web de su sitio web) en lugar de ser humano. Es binario en lugar de texto, lo que lo hace inherentemente más eficiente. La transferencia y el análisis de los datos es más rápido usando protocolos binarios.
  2. Se pueden transferir múltiples archivos simultáneamente en la misma conexión . Las correcciones se implementaron de manera que puede canalizar recursos en la misma conexión. En lugar de tener que abrir una nueva conexión cada vez (nuestro repartidor regresa a la base), todos los recursos se pueden llevar a cabo en la misma conexión (nuestro repartidor tira todo en una camioneta y toma todo en un solo viaje).
  3. Servidor push para enviar archivos que serán requeridos por el navegador. En HTTP1.x, es el navegador web el que solicita al servidor web los recursos que necesita. HTTP Server Push (implementado como parte de HTTP / 2) permite que el servidor comience a enviar recursos que sabe que necesitará el navegador web. Por ejemplo, puede indicar al servidor que no espere a que el navegador solicite los archivos CSS, JS y otros recursos que el navegador va a necesitar de todos modos.
  4. Encabezado del paquete HTTP y otras optimizaciones : son mejoras técnicas diseñadas para mejorar la eficacia real de las transferencias.

¿Qué se requiere para habilitar HTTP2?

Al no dar soporte a HTTP / 2 sobre las conexiones no encriptadas, los propietarios de sitios web están siendo fuertemente armados para implementar HTTPs para su sitio web.

De vuelta al principio del artículo, dijimos que no se requiere mucho esfuerzo de su parte para habilitar HTTP / 2. La habilitación de HTTP / 2 es algo que debe hacerse a nivel del servidor web. La mayoría de los servidores web como Apache, Nginx, IIS y otros servidores web importantes ya tienen soporte para HTTP / 2.

Si ejecuta su propio servidor web, solo necesita instalar y habilitar las bibliotecas HTTP / 2. Si su sitio web está alojado con una empresa de hosting, verifique con la compañía si el servidor web ya está habilitado para HTTP / 2.

¿La captura? Certificados seguros

Tal vez las cosas eran demasiado buenas para ser verdad. Acabamos de analizar cómo los servidores web ya son totalmente compatibles con HTTP / 2.

La mayoría de los principales navegadores web también son totalmente compatibles con HTTP / 2. Sin embargo, también han elegido admitir HTTP / 2 en modo cifrado. La razón de esto es que ha habido un fuerte movimiento para habilitar HTTPS (encriptación) en toda la web. Tales iniciativas como HTTPS en todas partes Impulsar fuertemente la necesidad de HTTPS en todos los sitios web.

Al no dar soporte a HTTP / 2 sobre las conexiones no encriptadas, los propietarios de sitios web están siendo fuertemente armados para implementar HTTPs para su sitio web.

Por supuesto, esto no es necesariamente algo malo. La implementación de HTTPS tiene importantes ventajas de seguridad y privacidad. Con empresas que se unen para formar una Autoridad de Certificación llamada Vamos a cifrar para permitir certificados seguros gratuitos, el costo total para adquirir un certificado e implementar HTTPS es mucho más económico. Esto fue relativamente caro hasta hace un tiempo.

Implementar HTTPS no es algo que deba hacer sin darle la debida atención necesaria. Es probable que desee discutir esto con su desarrollador de sitio web de confianza o con alguien con suficiente experiencia técnica. La mayoría de las veces, su empresa de alojamiento debe ser capaz de guiarlo a través de esto.

Por supuesto, se recomienda encarecidamente que implemente HTTPS. Además de la seguridad adicional, obtendrá la capacidad de habilitar HTTP / 2 y hacer que su sitio web sea más rápido. Eso es lo que llamamos una situación de ganar-ganar.

¿Siguen siendo necesarias otras técnicas de optimización?

Si y no.

Ciertas optimizaciones destinadas a reducir las solicitudes web se vuelven superfluas. Si su sitio está incurriendo en tiempo de cálculo para "combinar" JS, CSS y otros archivos, esto se ha convertido en un costo general. Cualquier momento "desperdiciado" que aborde las ineficiencias mencionadas anteriormente ya no es necesario.

Por otro lado, las optimizaciones tales como el almacenamiento en caché, la reducción del tamaño de los recursos, la entrega de contenido a través de CDN, la elección de un excelente servidor de alojamiento y otras optimizaciones que aborden diferentes tipos de ineficiencias deben mantenerse en su lugar.

Lo mejor de HTTP / 2 es que no solo hace que su sitio web se cargue más rápido, sino que también lo empuja a hacer que su sitio web sea más seguro. No se puede argumentar que haya ventajas para ambos. HTTP / 2 es el siguiente paso para hacer que toda la web sea más rápida. Todos seamos parte de esto y lo hagamos realidad.