Time to first byte

Un article de Wikipédia, l'encyclopédie libre.

Le Time to First Byte (TTFB) est une mesure utilisée comme une indication de la réactivité d'un serveur Web ou d'une autre ressource réseau.

Le terme est utilisé depuis plusieurs décennies, mais est devenu populaire depuis 2012[1].

La TTFB mesure la durée entre l'utilisateur ou le client qui fait une requête HTTP et le premier octet de la page reçue par le navigateur du client. Ce temps est composé du temps de connexion de la socket, du temps nécessaire pour envoyer la requête HTTP, et du temps nécessaire pour obtenir le premier octet de la page. Bien que parfois mal compris comme un calcul post-DNS, le calcul initial de la TTFB en réseau inclut toujours la latence du réseau pour mesurer le temps nécessaire pour qu'une ressource commence à se charger.

Souvent, une taille TTFB plus petite (plus rapide) est considérée comme une référence pour une application serveur bien configurée. Par exemple, un temps plus court avant le premier octet pourrait indiquer que le serveur Web effectue moins de calculs dynamiques, bien que cela soit souvent dû à la mise en cache au niveau DNS, serveur ou application. Plus souvent, on observe une très faible TTFB avec des pages Web à service statique, tandis qu'une plus grande TTFB est souvent observée avec des demandes de données dynamiques plus importantes tirées d'une base de données.

Utilisations en développement web[modifier | modifier le code]

Le temps de chargement du premier octet est important pour une page Web car il indique les pages qui se chargent lentement en raison de calculs côté serveur qui pourraient être mieux servies comme script côté client. Souvent, cela inclut des scripts simples et des calculs comme la transition d'images qui ne sont pas des gifs et qui sont transférées en utilisant JavaScript pour modifier leurs niveaux de transparence. Cela peut souvent accélérer un site Web en téléchargeant plusieurs petites images par le biais de sockets au lieu d'une seule grande image. Cependant, cette technique est plus intensive sur l'ordinateur du client et sur les PC plus anciens peut ralentir la page web lors du rendu réel.

Le temps de chargement du premier octet est si important que certaines pages Web ont renoncé au chargement paresseux pour tenter de donner l'impression que leur contenu est chargé plus rapidement. Ceci est utile avec les pages Web qui ont beaucoup d'images et de grandes quantités de données. Toutefois, il y a plusieurs raisons pour lesquelles la TTFB peut être élevée :

  • Les requêtes de base de données sont rapides mais nécessitent souvent une logique post-requête pour formater les données pour l'utilisateur final ;
  • Les interfaces de programmation d'application utilisées côté serveur peuvent augmenter le temps de réponse global, comme c'est courant dans les API REST qui traitent de grandes quantités de données d'une base de données.

Importance[modifier | modifier le code]

La TTFB est souvent utilisée par les moteurs de recherche comme Google et Yahoo pour améliorer les classements de recherche puisqu'un site Web répondra à la demande plus rapidement et sera utilisable avant que d'autres sites Web puissent le faire. Il y a des inconvénients à cette mesure puisqu'un serveur Web ne peut envoyer que la première partie de l'en-tête avant même que le contenu soit prêt à être envoyé pour réduire sa TTFB. Bien que cela puisse sembler trompeur, cela peut être utilisé pour informer l'utilisateur que le serveur web est en fait actif et qu'il répondra avec du contenu sous peu. Il y a plusieurs raisons pour lesquelles cette tromperie est utile, notamment parce qu'elle entraîne la création d'une connexion persistante, ce qui entraîne moins de tentatives de réessai de la part d'un navigateur ou d'un utilisateur puisqu'il a déjà reçu une connexion et se prépare actuellement au téléchargement du contenu.

TTFB VS temps de charge[modifier | modifier le code]

Le temps de chargement est le temps qu'il faut pour qu'une page Web soit chargée et utilisable par un navigateur. Souvent, dans la livraison d'une page Web, une page est compressée au format Gzip pour réduire la taille du téléchargement. Cette pratique empêche l'envoi du premier octet tant que la compression n'est pas terminée et augmente considérablement la TTFB. La TTFB peut aller de 100-200 ms à 1000-2000 ms, mais la page se chargera beaucoup plus rapidement et sera prête pour l'utilisateur dans un temps beaucoup plus court. De nombreux sites Web constatent une augmentation de 5 à 10 fois plus fréquente de la TTFB, mais un temps de réponse du navigateur beaucoup plus rapide, avec une diminution de 20 % du temps de chargement. Il y a cependant quelques inconvénients à utiliser la compression Gzip :

La charge du CPU du serveur augmente pendant la compression.

peut prendre beaucoup de temps à traiter et puisqu'un premier octet n'est pas envoyé tant qu'il n'a pas été compressé, il peut donner l'impression que la page Web est suspendue.

Les longs délais jusqu'aux premiers octets amènent souvent un utilisateur à annuler et à réémettre sa demande au serveur Web, ce qui entraîne une augmentation de la charge CPU en raison des demandes de charge séquentielles.

D'après Google, le TTFB ne devrait pas dépasser les 200 ms[2]. Cependant le temps de réponse perçu par l'utilisateur est encore plus important que le temps de chargement réel de la page[3].

Notes et références[modifier | modifier le code]

Liens externes[modifier | modifier le code]