Le Time to First Byte (TTFB) est le délai avant l’arrivée du premier octet d’une réponse HTTP. Il permet d’évaluer la réactivité observée depuis le client.
Plus cette mesure est basse, plus le client reçoit rapidement le début de la réponse.
Ping et TTFB : deux mesures différentes
La commande ping mesure le temps aller-retour (RTT) de paquets ICMP entre deux machines. Elle aide à diagnostiquer la latence réseau, mais ne mesure ni une requête HTTP, ni le traitement de la page par le serveur. Un serveur peut aussi bloquer ICMP tout en répondant normalement en HTTPS.
Que mesure le Time To First Byte ?
Le TTFB mesure le délai entre le début d’une requête et l’arrivée du premier octet de la réponse. Il ne mesure pas le téléchargement complet de la page.
Sur une nouvelle connexion HTTPS, ce délai comprend la résolution DNS, l’établissement de la connexion TCP, la négociation TLS, l’envoi de la requête, le traitement côté serveur et le retour du premier octet. Le cache DNS et la réutilisation d’une connexion peuvent réduire ou éviter certaines étapes. Pour une navigation dans le navigateur, les redirections éventuelles comptent aussi.
Le TTFB observé dépend donc à la fois du réseau, du serveur et des éventuels intermédiaires comme un CDN.
Ce temps varie en fonction de plusieurs critères: l’éloignement entre le serveur et le client, la qualité de la connexion, ou les questions de connexion directe (réseau filaire) ou indirecte (WI-FI, 3G, etc.) peuvent modifier le TTFB.
Un TTFB faible indique une réponse rapide dans les conditions du test. Il ne prouve pas à lui seul que le serveur d’origine est bien configuré : un CDN ou un cache peut répondre à sa place. Comparez plusieurs mesures, avec et sans cache lorsque c’est possible.
Calcul du TTFB avec curl
Il existe pas mal de services en ligne qui permettent de calculer le TTFB mais il est aussi très simple de le calculer soi-même, avec un simple terminal avec curl :
curl -sS -o /dev/null -w 'DNS: %{time_namelookup} Connect: %{time_connect} TLS: %{time_appconnect} TTFB: %{time_starttransfer} Total: %{time_total}
' https:Langage du code : PHP (php)
Les valeurs sont en secondes et cumulées depuis le début : time_namelookup marque la fin de la résolution DNS, time_connect la connexion TCP, time_appconnect la fin de la négociation TLS et time_starttransfer l’arrivée du premier octet. time_total inclut le téléchargement complet. Ne les additionnez pas. Sur une nouvelle connexion HTTPS directe, la différence TLS − Connect donne approximativement la durée de la négociation TLS ; TTFB − TLS inclut encore l’envoi de la requête et le trajet réseau, pas seulement le calcul serveur. Cette commande ne suit pas les redirections : utilisez directement l’URL finale.
Les sorties ci-dessous sont les mesures historiques publiées en mai 2018 avec l’ancienne commande (Connect, TTFB et temps total uniquement). Elles ne décrivent pas les performances actuelles du site. Depuis ma connexion à l’époque :
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54616 0 54616 0 0 153k 0 --:--:-- --:--:-- --:--:-- 153k
Connect: 0.039729 TTFB: 0.269024 Total time: 0.347745Langage du code : CSS (css)
A titre indicatif, si on lance la requête depuis le serveur:
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 54616 0 54616 0 0 797k 0 --:--:-- --:--:-- --:--:-- 808k
Connect: 0.001645 TTFB: 0.066232 Total time: 0.066848Langage du code : CSS (css)
Ces deux mesures illustrent l’effet des conditions de test. Elles ne permettent pas d’attribuer toute la différence à la distance : le routage, les caches et la charge serveur peuvent aussi intervenir.
Pour connaître l’expérience de visiteurs américains ou australiens, mesurez depuis ces régions : on ne peut pas déduire leur TTFB d’un seul test français.
Réduire le TTFB peut améliorer le début d’affichage et le LCP. Le TTFB n’est pas un Core Web Vital et une amélioration isolée ne garantit pas un meilleur classement Google. Les Core Web Vitals participent aux systèmes de classement, parmi d’autres signaux.
Quel TTFB viser ?
Les repères indicatifs de web.dev sont : bon jusqu’à 0,8 seconde, à améliorer au-delà de 0,8 et jusqu’à 1,8 seconde, mauvais au-delà de 1,8 seconde. Ils s’apprécient selon les conditions de mesure et ne constituent pas une garantie de classement.
Sources : définition et repères du TTFB sur web.dev, variables de mesure de curl et Core Web Vitals et résultats Google.