PerformanceResourceTiming
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2017.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das PerformanceResourceTiming Interface ermöglicht die Abfrage und Analyse detaillierter Netzwerk-Timing-Daten bezüglich des Ladevorgangs von Ressourcen einer Anwendung. Eine Anwendung kann die Timing-Metriken verwenden, um beispielsweise die Zeit zu bestimmen, die benötigt wird, um eine bestimmte Ressource abzurufen, wie ein XMLHttpRequest, <SVG>, Bild oder Skript.
Beschreibung
Die Eigenschaften des Interfaces erstellen eine Ressourcenladezeitleiste mit hochauflösenden Zeitstempeln für Netzwerkereignisse wie Redirect-Start- und -Endzeiten, Fetch-Start, DNS-Lookup-Start- und -Endzeiten, Antwort-Start- und -Endzeiten und mehr. Zusätzlich erweitert das Interface PerformanceEntry mit anderen Eigenschaften, die Daten über die Größe der abgerufenen Ressource sowie den Ressourcentyp, der das Abrufen initiiert hat, bereitstellen.
Typische Ressourcen-Timing-Metriken
Die Eigenschaften dieses Interfaces ermöglichen die Berechnung bestimmter Ressourcen-Timing-Metriken. Häufige Anwendungsfälle sind:
- Messung der TCP-Handschlagzeit (
connectEnd-connectStart) - Messung der DNS-Lookup-Zeit (
domainLookupEnd-domainLookupStart) - Messung der Umleitungszeit (
redirectEnd-redirectStart) - Messung der Zwischenanfragezeit (
firstInterimResponseStart-finalResponseHeadersStart) - Messung der Anforderungszeit (
responseStart-requestStart) - Messung der Dokumentanforderungszeit (
finalResponseHeadersStart-requestStart) - Messung der TLS-Verhandlungszeit (
requestStart-secureConnectionStart) - Messung der Fetch-Zeit (ohne Umleitungen) (
responseEnd-fetchStart) - Messung der ServiceWorker-Verarbeitungszeit (
fetchStart-workerStart) - Überprüfung, ob Inhalte komprimiert wurden (
decodedBodySizesollte nichtencodedBodySizesein) - Überprüfung, ob lokale Caches getroffen wurden (
transferSizesollte0sein) - Überprüfung, ob moderne und schnelle Protokolle verwendet werden (
nextHopProtocolsollte HTTP/2 oder HTTP/3 sein) - Überprüfung, ob die richtigen Ressourcen renderblockierend sind (
renderBlockingStatus)
Verwaltung der Ressourcen-Puffergrößen
Standardmäßig werden nur 250 Ressourcentiming-Einträge gepuffert. Für weitere Informationen siehe die Ressourcen-Puffergrößen im Resource Timing Leitfaden.
Timing-Informationen über Ursprünge hinweg
Viele der Ressourcentiming-Eigenschaften sind darauf beschränkt, 0 oder einen leeren String zurückzugeben, wenn die Ressource eine CORS-Anforderung ist. Um Timing-Informationen über Ursprünge hinweg freizugeben, muss der Timing-Allow-Origin HTTP-Antwortheader gesetzt werden.
Die Eigenschaften, die standardmäßig als 0 zurückgegeben werden, wenn das Laden einer Ressource von einem anderen Ursprung als dem der Webseite selbst erfolgt: redirectStart, redirectEnd, domainLookupStart, domainLookupEnd, connectStart, connectEnd, secureConnectionStart, requestStart und responseStart.
Beispielsweise sollte die CORS-Ressource die folgenden Header senden, um https://big.rakal.top zu erlauben, Ressourcentiming-Informationen zu sehen:
Timing-Allow-Origin: https://big.rakal.top
Instanzfelder
>Geerbt von PerformanceEntry
Dieses Interface erweitert die folgenden PerformanceEntry Eigenschaften für Ressourcen-Performance-Eintragstypen, indem sie qualifiziert und eingeschränkt werden wie folgt:
PerformanceEntry.durationSchreibgeschützt-
Gibt einen
timestampzurück, der die Differenz zwischen den EigenschaftenresponseEndundstartTimedarstellt. PerformanceEntry.entryTypeSchreibgeschützt-
Gibt
"resource"zurück. PerformanceEntry.nameSchreibgeschützt-
Gibt die URL der Ressource zurück.
PerformanceEntry.startTimeSchreibgeschützt-
Gibt einen
timestampfür den Zeitpunkt zurück, zu dem ein Ressourcenabruf gestartet wurde. Dieser Wert ist gleichwertig zuPerformanceResourceTiming.fetchStart.
Zeitstempel
Das Interface unterstützt die folgenden Zeitstempel-Eigenschaften, die Sie im Diagramm sehen können und die in der Reihenfolge aufgeführt sind, in der sie für das Abrufen einer Ressource aufgezeichnet werden. Eine alphabetische Liste finden Sie in der Navigation links.
PerformanceResourceTiming.redirectStartSchreibgeschützt-
Ein
DOMHighResTimeStamp, der die Startzeit des Abrufs darstellt, der die Umleitung einleitet. PerformanceResourceTiming.redirectEndSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar nach Erhalt des letzten Bytes der Antwort der letzten Umleitung. PerformanceResourceTiming.workerStartSchreibgeschützt-
Gibt einen
DOMHighResTimeStampunmittelbar vor der Verteilung desFetchEventzurück, wenn ein Service Worker-Thread bereits läuft, oder unmittelbar bevor der Service Worker-Thread gestartet wird, wenn er noch nicht läuft. Wenn die Ressource nicht von einem Service Worker abgefangen wird, gibt die Eigenschaft immer 0 zurück. PerformanceResourceTiming.fetchStartSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar bevor der Browser beginnt, die Ressource abzurufen. PerformanceResourceTiming.domainLookupStartSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar bevor der Browser das Domain-Namensnachschlagen für die Ressource startet. PerformanceResourceTiming.domainLookupEndSchreibgeschützt-
Ein
DOMHighResTimeStamp, der die Zeit unmittelbar nach Abschluss des Domain-Namensnachschlagens für die Ressource darstellt. PerformanceResourceTiming.connectStartSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar bevor der Browser beginnt, die Verbindung zum Server herzustellen, um die Ressource abzurufen. PerformanceResourceTiming.secureConnectionStartSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar bevor der Browser beginnt, den Handshake-Prozess zur Sicherstellung der aktuellen Verbindung zu starten. PerformanceResourceTiming.connectEndSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar nachdem der Browser die Verbindung zum Server für den Abruf der Ressource abgeschlossen hat. PerformanceResourceTiming.requestStartSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar bevor der Browser beginnt, die Ressource vom Server anzufordern. PerformanceResourceTiming.firstInterimResponseStartExperimentell Schreibgeschützt-
Ein
DOMHighResTimeStamp, der die Zwischenantwortzeiten (zum Beispiel 100 Continue oder 103 Early Hints) darstellt. PerformanceResourceTiming.responseStartSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar nachdem der Browser das erste Byte der Antwort vom Server erhält (was eine Zwischenantwort sein kann). PerformanceResourceTiming.finalResponseHeadersStartExperimentell Schreibgeschützt-
Ein
DOMHighResTimeStamp, der die endgültige Kopfzeilenantwortzeit (zum Beispiel 200 Success) darstellt, nach jeder Zwischenantwortzeit. PerformanceResourceTiming.responseEndSchreibgeschützt-
Ein
DOMHighResTimeStampunmittelbar nachdem der Browser das letzte Byte der Ressource erhält oder unmittelbar bevor die Transportverbindung geschlossen wird, je nachdem, was zuerst eintritt.
Zusätzliche Ressourceninformationen
Darüber hinaus stellt dieses Interface die folgenden Eigenschaften bereit, die weitere Informationen über eine Ressource enthalten:
PerformanceResourceTiming.contentTypeSchreibgeschützt Experimentell-
Ein String, der eine minimierte und standardisierte Version des MIME-Typs der abgerufenen Ressource darstellt.
PerformanceResourceTiming.decodedBodySizeSchreibgeschützt-
Eine Zahl, die die Größe (in Oktetten) der Nachrichtennutzlast nach der Entfernung jeglicher angewandter Inhaltskodierung darstellt, die durch den Abruf (HTTP oder Cache) erhalten wurde.
PerformanceResourceTiming.deliveryTypeExperimentell Schreibgeschützt-
Gibt an, wie die Ressource bereitgestellt wurde — zum Beispiel aus dem Cache oder aus einem Navigations-Vorababruf.
PerformanceResourceTiming.encodedBodySizeSchreibgeschützt-
Eine Zahl, die die Größe (in Oktetten) der Abrufnachricht (HTTP oder Cache) für den Nutzlastkörper darstellt, bevor jegliche angewandte Inhaltskodierungen entfernt werden.
PerformanceResourceTiming.initiatorTypeSchreibgeschützt-
Ein String, der das Webplattform-Feature beschreibt, das den Performance-Eintrag initiiert hat.
PerformanceResourceTiming.nextHopProtocolSchreibgeschützt-
Ein String, der das Netzwerkprotokoll darstellt, das zum Abrufen der Ressource verwendet wurde, wie es durch die ALPN-Protokoll-ID (RFC7301) identifiziert wurde.
PerformanceResourceTiming.renderBlockingStatusSchreibgeschützt-
Ein String, der den Render-Blocking-Status darstellt. Entweder
"blocking"oder"non-blocking". PerformanceResourceTiming.responseStatusSchreibgeschützt-
Eine Zahl, die den HTTP-Antwortstatuscode darstellt, der beim Abrufen der Ressource zurückgegeben wird.
PerformanceResourceTiming.transferSizeSchreibgeschützt-
Eine Zahl, die die Größe (in Oktetten) der abgerufenen Ressource darstellt. Die Größe umfasst die Antwortkopfzeilenfelder sowie den Antwort-Payload-Body.
PerformanceResourceTiming.serverTimingSchreibgeschützt-
Ein Array von
PerformanceServerTiming-Einträgen, die Server-Timing-Metriken enthalten.
Instanzmethoden
PerformanceResourceTiming.toJSON()-
Gibt eine JSON-Darstellung des
PerformanceResourceTiming-Objekts zurück.
Beispiele
>Protokollierung von Ressourcentiming-Informationen
Beispiel unter Verwendung eines PerformanceObserver, der über neue resource-Performance-Einträge benachrichtigt, sobald sie in der Performance-Zeitleiste des Browsers aufgezeichnet werden. Verwenden Sie die buffered-Option, um auf Einträge vor der Erzeugung des Observers zuzugreifen.
const observer = new PerformanceObserver((list) => {
list.getEntries().forEach((entry) => {
console.log(entry);
});
});
observer.observe({ type: "resource", buffered: true });
Beispiel unter Verwendung von Performance.getEntriesByType(), das nur resource-Performance-Einträge zeigt, die zum Zeitpunkt des Aufrufs dieser Methode in der Performance-Zeitleiste des Browsers vorhanden sind:
const resources = performance.getEntriesByType("resource");
resources.forEach((entry) => {
console.log(entry);
});
Spezifikationen
| Specification |
|---|
| Resource Timing> # resources-included-in-the-performanceresourcetiming-interface> |
Browser-Kompatibilität
Loading…