Yo, robot III – White/Gray/Black Hat SEO – El Time To First Byte

YoRobot3 - El Time To First Byte

Hoy vengo a compartir otro pequeño script para testear el tiempo de respuesta de un servidor. Este es el llamado TTFB, Time To First Byte en inglés. Simplemente es el tiempo que pasa entre que tu navegador pide una web hasta que empieza el servidor a enviar los bytes de respuesta. Esta prueba nos da una buena visión de si el servidor y la web se pueden optimizar. Un TTFB bajo es buena señal, indica que tanto el servidor (a nivel hardware y software) como la aplicación web esta todo bien optimizado. Sino, ya tenemos algo en lo que enfocarnos.

El código

<?php

include 'vendor/autoload.php';

$curl = new Curl\Curl();

$max = 10;
$TTFB = 0;
for ($i = 0; $i < $max; ++$i) {
    $curl->get($argv[1]);
    $TTFB += $curl->getOpt(CURLINFO_STARTTRANSFER_TIME);
    echo 'Current TTFB = '.$curl->getOpt(CURLINFO_STARTTRANSFER_TIME).PHP_EOL;
}
$TTFB = $TTFB / $max;
echo 'Testing '.$max.' times, average TTFB: '.$TTFB.PHP_EOL;

Simplemente se usa desde PHP una biblioteca de funciones llamada cURL. Esta biblioteca de funciones te permiten manejarte haciendo peticiones HTTP, HTTPS, FTP, TELNET.. entre otras. Aunque principalmente se usa para los protocolos HTTP y HTTPS. Lo mismo de antes pero con otro script sin usar la librería de composer curl/curl sino directamente cURL de PHP:

<?php

$ch = curl_init($argv[1]);
$fp = fopen("url_get_average_ttfb_no_composer.txt", "w");

curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);

$max = 10;
$TTFB = 0;
for ($i = 0; $i < $max; ++$i) {
    curl_exec($ch);
    $TTFB += curl_getinfo($ch)['starttransfer_time'];
    echo 'Current TTFB = '.curl_getinfo($ch)['starttransfer_time'].PHP_EOL;
}
$TTFB = $TTFB / $max;
echo 'Testing '.$max.' times, average TTFB: '.$TTFB.PHP_EOL;

curl_close($ch);
fclose($fp);

Ejecutándolo verás que lo normal es que la primera prueba tenga un TTFB mayor, tarde más en responder el servidor, porque es una primera visita fría. Pero luego suele bajar. El objetivo entonces es opmitizar la web para que ande con un TTFB entre 0,1 y 0,3 si es posible. Puede ser cuestión de optimizar a nivel de sistemas, o a nivel de software. Ya sea software a nivel del sistema operativo como software a nivel de la aplicación web.

Éste pequeño script simplemente recibe una URL ejecutándolo así:

$ php url_get_average_ttfb.php https://jnjsite.com/

..lanzando así varias pruebas para calcular un TTFB medio:

TTFB medio

Cómo ver el TTFB en el navegador

Hay que señalar que cuando inspeccionamos una web con el navegador se hace todo más lento. No es muy fiable este tiempo, es decir, que en inspeccionar del navegador te va a salir más tiempo TTFB del que realmente es. Si le damos a inspeccionar una página en el navegador, vamos a la sección de Red, y vamos navegando por ella.. veremos claro cuál es ese TTFB. Por ejemplo, en esta carga:

TTFB Firefox

Cuando se carga la página inicial, se hacen una serie de peticiones. A veces DNS, se conecta, se empieza la negociacion TLS con el servidor enviando la solicitud del fichero.. esperamos, y en el momento en que se empiezan a recibir los bytes de respuesta es el momento del TTFB. En la imagen, los últimos 74 milisegundos son de recepción de datos del servidor. Esta es la primera respuesta del servidor.

Compartir..

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *