Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

PerformanceServerTiming

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit März 2023 browserübergreifend verfügbar.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Sicherer Kontext: Diese Funktion ist nur in sicheren Kontexten (HTTPS) in einigen oder allen unterstützenden Browsern verfügbar.

Die Schnittstelle PerformanceServerTiming stellt Servermetriken bereit, die mit der Antwort im HTTP-Header Server-Timing gesendet werden.

Der Zugriff auf diese Schnittstelle ist auf denselben Ursprung beschränkt. Mit dem Header Timing-Allow-Origin können Sie jedoch angeben, welche Domains auf die Servermetriken zugreifen dürfen. Beachten Sie, dass diese Schnittstelle in einigen Browsern nur in sicheren Kontexten (HTTPS) verfügbar ist.

Instanzeigenschaften

PerformanceServerTiming.description Schreibgeschützt

Ein String mit der vom Server angegebenen Beschreibung der Metrik oder ein leerer String.

PerformanceServerTiming.duration Schreibgeschützt

Ein Double-Wert mit der vom Server angegebenen Dauer der Metrik oder der Wert 0.0.

PerformanceServerTiming.name Schreibgeschützt

Ein String mit dem vom Server angegebenen Namen der Metrik.

Instanzmethoden

PerformanceServerTiming.toJSON()

Gibt ein JSON-serialisierbares einfaches Objekt zurück, das das PerformanceServerTiming-Objekt repräsentiert. Wird von JSON.stringify() automatisch aufgerufen.

Beispiele

Angenommen, ein Server sendet den Header Server-Timing, beispielsweise ein Node.js-Server wie dieser:

js
const http = require("http");

function requestHandler(request, response) {
  const headers = {
    "Server-Timing": `
      cache;desc="Cache Read";dur=23.2,
      db;dur=53,
      app;dur=47.2
    `.replace(/\n/g, ""),
  };
  response.writeHead(200, headers);
  response.write("");
  return setTimeout(() => {
    response.end();
  }, 1000);
}

http.createServer(requestHandler).listen(3000).on("error", console.error);

Die PerformanceServerTiming-Einträge sind nun über die Eigenschaft PerformanceResourceTiming.serverTiming in JavaScript zugänglich und befinden sich in navigation- und resource-Einträgen.

Das folgende Beispiel verwendet einen PerformanceObserver, der über neue navigation- und resource-Performance-Einträge informiert, sobald sie in der Performance-Zeitleiste des Browsers erfasst werden. Verwenden Sie die Option buffered, um auf Einträge zuzugreifen, die bereits vor der Erstellung des Observers erfasst wurden.

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    entry.serverTiming.forEach((serverEntry) => {
      console.log(
        `${serverEntry.name} (${serverEntry.description}) duration: ${serverEntry.duration}`,
      );
      // Logs "cache (Cache Read) duration: 23.2"
      // Logs "db () duration: 53"
      // Logs "app () duration: 47.2"
    });
  });
});

["navigation", "resource"].forEach((type) =>
  observer.observe({ type, buffered: true }),
);

Das folgende Beispiel verwendet Performance.getEntriesByType(). Die Methode zeigt nur navigation- und resource-Performance-Einträge an, die zum Zeitpunkt des Aufrufs in der Performance-Zeitleiste des Browsers vorhanden sind:

js
for (const entryType of ["navigation", "resource"]) {
  for (const { name: url, serverTiming } of performance.getEntriesByType(
    entryType,
  )) {
    if (serverTiming) {
      for (const { name, description, duration } of serverTiming) {
        console.log(`${name} (${description}) duration: ${duration}`);
        // Logs "cache (Cache Read) duration: 23.2"
        // Logs "db () duration: 53"
        // Logs "app () duration: 47.2"
      }
    }
  }
}

Spezifikationen

Spezifikation
Server Timing
# the-performanceservertiming-interface

Browser-Kompatibilität

Siehe auch