Time to first byte (TTFB), el tiempo hasta el primer byte, es una medición utilizada como indicación de la capacidad de respuesta de un servidor web u otro recurso de red.
TTFB mide la duración desde que el usuario o cliente realiza una solicitud HTTP hasta el primer byte de la página del sitio web que recibe el navegador del cliente. Este tiempo se compone del tiempo de conexión del socket que genera el servidor web, el tiempo necesario para enviar la solicitud HTTP y el tiempo necesario para que el usuario obtenga el primer byte de la página. Aunque a veces se malinterpreta como un cálculo posterior a la petición DNS, el cálculo original de TTFB en la red siempre incluye la latencia de la red en la medición del tiempo que tarda un recurso en comenzar a cargarse. A menudo, un tamaño TTFB más pequeño (más rápido) se ve como un punto de referencia de una aplicación de servidor web bien configurado. Por ejemplo, un menor tiempo hasta el primer byte podría apuntar a que el servidor web realiza menos cálculos dinámicos, aunque esto a menudo se debe al almacenamiento en caché a nivel DNS, servidor o aplicación. Más comúnmente, se observa un TTFB muy bajo con páginas web servidas estáticamente, mientras que un TTFB más grande a menudo se ve afectado por solicitudes de datos más grandes y dinámicas que se extraen, por ejemplo, de una base de datos.
Usos en el desarrollo web
El tiempo hasta el primer byte es importante para una página web, ya que indica las páginas que se cargan lentamente debido a cálculos del lado del servidor que podrían servir mejor como scripting del lado del cliente. A menudo esto incluye scripts y cálculos simples como la transición de imágenes que no son gifs y se hacen la transición usando JavaScript para modificar sus niveles de transparencia. Esto a menudo puede acelerar un sitio web descargando múltiples imágenes más pequeñas a través de sockets en lugar de una imagen grande. Sin embargo, esta técnica es más intensiva en la computadora del cliente y en las PC más antiguas puede ralentizar la página web cuando realmente se renderiza.
El tiempo hasta el primer byte es tan importante que algunas páginas web han optado por utilizar "lazy loading" en un intento de hacer que el contenido parezca cargarse más rápido. Esto es útil con páginas web que tienen muchas imágenes y grandes cantidades de datos. Sin embargo, hay varias razones por las que el TTFB puede ser alto:
- las solicitudes de base de datos son rápidas, pero a menudo requieren lógica posterior a la consulta para formatear los datos para el usuario final;
- Las interfaces de programación de aplicaciones utilizadas en el lado del servidor pueden aumentar el tiempo de respuesta general, como es común en las API tranquilas que procesan grandes cantidades de datos de una base de datos.
Importancia
TTFB es utilizado a menudo por motores de búsqueda web como Google, Yahoo o DuckDuckGo para mejorar los rankings de búsqueda, ya que un sitio web responderá a la solicitud más rápida y será utilizable antes de que otros sitios web puedan. Hay desventajas en esta métrica ya que un servidor web puede enviar solo la primera parte del encabezado antes de que el contenido esté listo para enviar y obtener un buen TTFB. Si bien esto puede parecer confuso, se puede utilizar para informar al usuario de que el servidor web está activo y responderá con el contenido de la página de inmediato. Hay varias razones por las que este engaño es útil, ya que hace que se cree una conexión persistente, lo que resulta en menos intentos de reconexión de un navegador o usuario, ya que se encuentra una conexión activa y ahora se está preparando para el envío de contenido.
Los pasos para optimizar TTFB son los siguientes:
- Comprueba tu servidor web. Por ejemplo: Si hay reglas de firewall complejas, problemas de enrutamiento o mala configuración del servidor web. En estos casos, el tiempo de TTFB puede ser muy grande.
- Comprueba tu solicitud.
TTFB vs tiempo de carga
El tiempo de carga es el tiempo que tarda una página web en ser cargada y utilizable por un navegador, también conocido como First Input Delay (FID). A menudo, en la entrega de páginas web, una página se comprime en el formato Gzip para reducir el tamaño de la descarga. Esta práctica evita que el primer byte se envíe hasta que se complete la compresión y aumenta significativamente el TTFB. TTFB puede ir de 100 a 200 ms a 1000 a 20000 ms, pero la página se cargará mucho más rápido y estará lista para el usuario en una cantidad de tiempo mucho menor. Muchos sitios web ven un aumento común de 5 a 10 veces en TTFB, pero un tiempo de respuesta del navegador mucho más rápido obtiene una disminución del 20% en el tiempo de carga. Sin embargo, hay algunos inconvenientes en el uso de la compresión Gzip:
- La carga de la CPU del servidor aumenta durante la compresión de la página web.
- Los datos pueden tardar mucho tiempo en procesarse y como un primer byte no se envía hasta que se termina de comprimir, puede parecer que la página web estar colgada.
- Tiempos de espera hasta que los primeros bytes. Esto puede provocar que el usuario cancele y vuelva a emitir una nueva solicitud al servidor web, lo que resulta en un aumento de las cargas de CPU debido a las solicitudes de carga secuenciales.
Conclusión
El TTFB es el tiempo hasta el primer byte, midiendo el tiempo que tarda en recibir el usuario la primera información en el navegador web y procesa los eventos en respuesta a esa interacción.
Photo by Lukas Blazek on Unsplash
Referencias:
· Time to first byte (TTFB)