Performance API

La norme High Resolution Time définit l'interface Performance qui prend en charge les mesures de latence côté client au sein des applications. Les interfaces Performance sont considérées comme étant à haute résolution, car elles sont précises au millième de milliseconde (sous réserve de contraintes matérielles ou logicielles).

Les interfaces prennent en charge un certain nombre de cas d'utilisation, notamment le calcul des taux de trame (potentiellement important dans les animations) et l'évaluation comparative (comme le temps de chargement d'une ressource).

Comme l'horloge système d'une plateforme est sujette à divers décalages (comme les ajustements NTP), les interfaces prennent en charge une horloge monotone, c'est-à-dire une horloge toujours croissante. À ce titre, l'API Performance définit un type DOMHighResTimeStamp plutôt que d'utiliser l'interface Date.now().

DOMHighResTimeStamp

Le type DOMHighResTimeStamp, comme son nom l'indique, représente un point temporel de haute résolution. Ce type est un double et est utilisé par les interfaces de performance. La valeur peut être un point discret dans le temps ou la différence de temps entre deux points discrets dans le temps.

L'unité de DOMHighResTimeStamp est la milliseconde et doit être précise à 5 µs (microsecondes). Toutefois, si le navigateur n'est pas en mesure de fournir une valeur temporelle précise à 5 microsecondes (en raison, par exemple, de contraintes matérielles ou logicielles), le navigateur peut représenter la valeur comme un temps en millisecondes précis à la milliseconde près.

Méthodes

L'interface Performance possède deux méthodes. La méthode now() renvoie un DOMHighResTimeStamp dont la valeur dépend de navigationStart et du contexte. Si le contexte est une fenêtre, la valeur est l'heure de création du contexte du navigateur et si le contexte est un Worker, la valeur est l'heure de création du worker.

La méthode toJSON() renvoie une sérialisation de l'objet Performance, pour les attributs qui peuvent être sérialisés.

Propriétés

L'interface Performance possède deux propriétés. La propriété timing renvoie un objet PerformanceTiming contenant des informations de performance liées à la latence, telles que l'heure de début de navigation, les heures de début et de fin des redirections, les heures de début et de fin des réponses, etc.

La propriété navigation renvoie un objet PerformanceNavigation représentant le type de navigation qui se produit dans le contexte de navigation donné, comme la page vers laquelle on a navigué depuis l'historique, la page vers laquelle on a navigué en suivant un lien, etc.

Interfaces

Performance

Fournit des méthodes et des propriétés contenant des informations sur les performances liées au temps pour la page donnée.

PerformanceEntry

Fournit des méthodes et des propriétés pour encapsuler une seule mesure de performance qui fait partie de la chronologie des performances.

PerformanceFrameTiming

Fournit des méthodes et des propriétés contenant des données de synchronisation de trame sur la boucle d'événements du navigateur.

PerformanceMark

Une interface abstraite pour les entrées de performance avec un type d'entrée de « mark ». Les entrées de ce type sont créées en appelant performance.mark() pour ajouter un DOMHighResTimeStamp (un marqueur) à la chronologie des performances du navigateur.

PerformanceMeasure

Une interface abstraite pour les entrées de performance avec un type d'entrée de « measure ». Les entrées de ce type sont créées en appelant performance.measure() pour ajouter un DOMHighResTimeStamp (une mesure) entre deux marqueurs à la chronologie des performances du navigateur.

PerformanceNavigationTiming

Fournit des méthodes et des propriétés pour stocker et récupérer les horodatages haute résolution ou des métriques concernant les événements de navigation de document du navigateur.

PerformanceObserver

Fournit des méthodes et des propriétés utilisées pour observer les événements de mesure des performances et être informé des nouvelles entrées de performance lorsqu'elles sont enregistrées dans la chronologie des performances du navigateur.

PerformanceResourceTiming

Fournit des méthodes et des propriétés permettant de récupérer et d'analyser des données détaillées de synchronisation du réseau concernant le chargement des ressources d'une application.

Spécifications

Spécification Statut Commentaire
High Resolution Time Recommendation Définition initiale.
High Resolution Time Level 2 Recommendation Ajout de l'attribut performance sur Window et WorkerGlobalScope.
High Resolution Time Level 3 Brouillon de l'éditeur Ajout de la propriété timeOrigin à l'interface Performance.
Frame Timing Projet Ajout de l'interface PerformanceFrameTiming.
Navigation Timing Recommendation Ajout des interfaces PerformanceTiming et PerformanceNavigation. Ajout des propriétés timing et navigation à l'interface Performance.
Navigation Timing Level 2 Version de travail Ajout de l'interface PerformanceNavigationTiming. Rend obsolète l'interface PerformanceTiming, l'interface PerformanceNavigation, ainsi que les propriétés timing et navigation à l'interface Performance.
Performance Timeline Recommendation Ajout de l'interface PerformanceEntry, du type PerformanceEntryList, ainsi que les méthodes getEntries(), getEntriesByType(), et getEntriesByName() sur l'interface Performance.
Performance Timeline Level 2 Candidat au statut de recommandation Ajout d'un sérialiseur à l'interface PerformanceEntry ainsi que l'ajout de l'interface PerformanceObserver et du rappel (« callback »).
Resource Timing Level 1 Candidat au statut de recommandation Ajout de l'interface PerformanceResourceTiming. Ajout de la méthode clearResourceTiming(), la méthode setResourceTimingBufferSize() et du gestionnaire d'événements onresourcetimingbufferfull à l'interface Performance. Ajout de l'en-tête de réponse Timing-Allow-Origin.
Resource Timing Level 2 Version de travail Ajout des propriétés nextHopProtocol, workerStart, transferSize, encodedBodySize et decodedBodySize à l'interface PerformanceResourceTiming.
Resource Timing Level 3 Brouillon de l'éditeur
User Timing Recommendation Ajout des méthodes mark(), clearMarks(), measure() et clearMeasures() à l'interface Performance. Ajout des interfaces PerformanceMark et PeformanceMeasure.
User Timing Level 2 Version de travail

État de l'implémentation'

Comme le montre le tableau Compatibilité des navigateurs de l'interface Performance, la plupart de ces interfaces sont largement implémentées par les navigateurs de bureau.

Pour tester le support de votre navigateur pour l'interface Performance, exécutez l'application perf-api-support.

Voir aussi