--- title: Performance API slug: Web/API/Performance_API tags: - API - Guide - Aperçu - Performance - Performance Web translation_of: Web/API/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 {{jsxref("Date.now", "Date.now()")}}.
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.
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.
L'interface Performance
possède deux propriétés. La propriété timing
{{deprecated_inline}} 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
{{deprecated_inline}} 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.
Performance
PerformanceEntry
PerformanceFrameTiming
PerformanceMark
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
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
PerformanceObserver
PerformanceResourceTiming
Spécification | Statut | Commentaire |
---|---|---|
{{SpecName('Highres Time')}} | {{Spec2('Highres Time')}} | Définition initiale. |
{{SpecName('Highres Time Level 2')}} | {{Spec2('Highres Time Level 2')}} | Ajout de l'attribut performance sur Window et WorkerGlobalScope . |
{{SpecName('Highres Time Level 3')}} | {{Spec2('Highres Time Level 3')}} | Ajout de la propriété timeOrigin à l'interface Performance . |
{{SpecName('Frame Timing')}} | {{Spec2('Frame Timing')}} | Ajout de l'interface PerformanceFrameTiming . |
{{SpecName('Navigation Timing')}} | {{Spec2('Navigation Timing')}} | Ajout des interfaces PerformanceTiming et PerformanceNavigation . Ajout des propriétés timing et navigation à l'interface Performance . |
{{SpecName('Navigation Timing Level 2')}} | {{Spec2('Navigation Timing Level 2')}} | 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 . |
{{SpecName('Performance Timeline')}} | {{Spec2('Performance Timeline')}} | Ajout de l'interface PerformanceEntry , du type PerformanceEntryList , ainsi que les méthodes getEntries() , getEntriesByType() , et getEntriesByName() sur l'interface Performance . |
{{SpecName('Performance Timeline Level 2')}} | {{Spec2('Performance Timeline Level 2')}} | Ajout d'un sérialiseur à l'interface PerformanceEntry ainsi que l'ajout de l'interface PerformanceObserver et du rappel (« callback »). |
{{SpecName('Resource Timing')}} | {{Spec2('Resource Timing')}} | 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 . |
{{SpecName('Resource Timing 2')}} | {{Spec2('Resource Timing 2')}} | Ajout des propriétés nextHopProtocol , workerStart , transferSize , encodedBodySize et decodedBodySize à l'interface PerformanceResourceTiming . |
{{SpecName('Resource Timing 3')}} | {{Spec2('Resource Timing 3')}} | |
{{SpecName('User Timing')}} | {{Spec2('User Timing')}} | Ajout des méthodes mark() , clearMarks() , measure() et clearMeasures() à l'interface Performance . Ajout des interfaces PerformanceMark et PeformanceMeasure . |
{{SpecName('User Timing Level 2')}} | {{Spec2('User Timing Level 2')}} |
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
.