En-tête Server-Timing
Baseline
Large disponibilité
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis mars 2023.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'en-tête de réponse HTTP Server-Timing communique une ou plusieurs métriques de performance concernant le cycle requête-réponse au client.
Il est utilisé pour afficher les métriques de temps d'exécution du serveur backend (par exemple, lecture/écriture de base de données, temps CPU, accès au système de fichiers, etc.) dans les outils de développement du navigateur de l'utilisateur·ice ou dans l'interface PerformanceServerTiming.
| Type d'en-tête | En-tête de réponse |
|---|
Syntaxe
// Une seule mesure
Server-Timing: <timing-metric>
// Plusieurs mesures sous forme de liste séparée par des virgules
Server-Timing: <timing-metric>, …, <timing-metricN>
Un <timing-metric> a un nom, et peut inclure une durée optionnelle et une description optionnelle.
Par exemple :
// Une mesure avec seulement un nom
Server-Timing: missedCache
// Une mesure avec une durée
Server-Timing: cpu;dur=2.4
// Une mesure avec une description et une durée
Server-Timing: cache;desc="Lecture cache";dur=23.2
// Deux mesures avec des valeurs de durée
Server-Timing: db;dur=53, app;dur=47.2
Directives
<timing-metric>-
Une liste séparée par des virgules d'une ou plusieurs mesures avec les composants suivants séparés par des points-virgules :
<name>-
Un jeton de nom (pas d'espaces ni de caractères spéciaux) pour la mesure qui est spécifique à l'implémentation ou définie par le serveur, comme
cacheHit. <duration>Facultatif-
Une durée sous la forme de la chaîne de caractères
dur, suivie de=, puis d'une valeur, commedur=23.2. <description>Facultatif-
Une description sous la forme de la chaîne de caractères
desc, suivie de=, puis d'une valeur sous forme de jeton ou de chaîne de caractères entre guillemets, commedesc=prodoudesc="Recherche DB".
Les noms et les descriptions doivent être aussi courts que possible (par exemple, en utilisant des abréviations et en omettant les valeurs facultatives) afin de réduire au minimum le volume de données HTTP.
Description
>Vie privée et sécurité
L'en-tête Server-Timing peut exposer des informations potentiellement sensibles sur l'application et l'infrastructure.
Décidez quelles métriques envoyer, quand les envoyer et qui doit les voir en fonction du cas d'utilisation.
Par exemple, vous pouvez décider de n'afficher les métriques qu'aux utilisateur·ice·s authentifié·e·s et rien sur les réponses publiques.
L'interface PerformanceServerTiming
En plus de l'affichage des mesures de l'en-tête Server-Timing dans les outils de développement du navigateur, l'interface PerformanceServerTiming permet à ces outils de collecter et de traiter automatiquement les mesures à partir de JavaScript. Cette interface est limitée à la même origine, mais vous pouvez utiliser l'en-tête Timing-Allow-Origin pour définir les domaines autorisés à accéder aux mesures du serveur. Dans certains navigateurs, cette interface n'est disponible que dans des contextes sécurisés (HTTPS).
Les composants de l'en-tête Server-Timing correspondent aux propriétés de PerformanceServerTiming comme suit :
"name"->PerformanceServerTiming.name"dur"->PerformanceServerTiming.duration"desc"->PerformanceServerTiming.description
Exemples
>Envoyer une mesure à l'aide de l'en-tête Server-Timing
La réponse suivante inclut une mesure custom-metric avec une durée de 123.45 millisecondes et une description « Ma mesure personnalisée » :
Server-Timing: custom-metric;dur=123.45;desc="Ma mesure personnalisée"
Server-Timing en tant que « remorque » de HTTP
Dans la réponse suivante, l'en-tête Trailer est utilisé pour indiquer qu'un en-tête Server-Timing suit le corps de la réponse.
Une mesure custom-metric avec une durée de 123.4 millisecondes est envoyée.
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Trailer: Server-Timing
--- response body ---
Server-Timing: custom-metric;dur=123.4
Attention :
Seules les outils de développement du navigateur peuvent utiliser l'en-tête Server-Timing en tant que « remorque » de HTTP pour afficher des informations dans l'onglet Réseau -> Chronologie.
L'API Fetch ne peut pas accéder aux remorques de HTTP.
Voir Compatibilité des navigateurs pour plus d'informations.
Spécifications
| Spécification |
|---|
| Server Timing> # the-server-timing-header-field> |
Compatibilité des navigateurs
Voir aussi
- L'interface API
PerformanceServerTiming - L'en-tête
Trailer