Qu'est-ce que l'API Server-Timing ?
Server-Timing est un en-tête HTTP par lequel le serveur transmet au navigateur ses durées internes (base de données, cache, rendu).
Qu'est-ce que l'API Server-Timing ?
Server-Timing est un en-tête de réponse HTTP par lequel votre serveur indique combien de temps a duré son propre travail, par exemple une requête en base, une lecture de cache ou le rendu. Le navigateur affiche ces métriques dans ses outils de développement et les expose à JavaScript via l'interface PerformanceServerTiming. Il permet de savoir où le temps est passé côté serveur.
Syntaxe
Chaque métrique a un nom et, en option, une durée et une description ; plusieurs métriques sont séparées par des virgules. D'après MDN :
Server-Timing: db;dur=53, cache;desc="Cache Read";dur=23.2, app;dur=47.2
Le nom est un jeton sans espace ni caractère spécial, dur la durée en nombre et desc la description. En JavaScript, les champs s'appellent name, duration et description.
Exemple
Le Time to First Byte d'une page produit est de 900 ms. Avec Server-Timing: db;dur=620, render;dur=210, on voit tout de suite que l'essentiel vient de la base de données. Un script de surveillance des utilisateurs réels peut collecter ces valeurs à chaque visite.
Erreurs courantes
- Divulguer des détails internes. Selon MDN, l'en-tête peut exposer des informations sensibles sur l'application et l'infrastructure. Envoyez-le de façon ciblée, par exemple aux seuls utilisateurs authentifiés.
- Attendre un accès inter-origines. L'interface est limitée à la même origine. Pour d'autres origines, il faut un en-tête
Timing-Allow-Origin. - Mesurer trop grossièrement. Une seule métrique
totalapprend peu. Découpez par phase. - La confondre avec le temps réseau. Server-Timing ne reflète que ce que mesure le serveur. Le côté navigateur relève de la Web Performance API.
Server-Timing et surveillance
Il est surtout utile avec des mesures externes. La surveillance d'API de LoadFocus découpe le temps de réponse de chaque exécution en attente, DNS, connexion TCP, premier octet et téléchargement : vous séparez réseau et serveur, puis regardez à l'intérieur du serveur avec Server-Timing.
Questions fréquentes : Server-Timing
Les navigateurs prennent-ils en charge Server-Timing ?
MDN le classe Baseline « Widely available », disponible dans les navigateurs depuis mars 2023, avec des écarts selon les parties.
JavaScript peut-il lire les valeurs ?
Oui, via PerformanceServerTiming. Entre origines différentes, il faut aussi Timing-Allow-Origin.
Mesure-t-il le temps réseau ?
Non, seulement ce que votre serveur choisit de mesurer.
Est-ce sûr en production ?
Oui, si vous limitez ce que vous envoyez. L'en-tête peut révéler des détails d'infrastructure.
Outils LoadFocus connexes
Mettez ce concept en pratique avec LoadFocus, la plateforme même qui propulse tout ce que vous venez de lire.