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

View in English Always switch to English

PerformancePaintTiming

Baseline Weitgehend verfügbar *

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

* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.

Das PerformancePaintTiming-Interface liefert Timing-Informationen über "Paint"- (auch "Render"-) Operationen während des Aufbaus einer Webseite. "Paint" bezieht sich auf die Umwandlung des Renderbaums in auf dem Bildschirm sichtbare Pixel.

Dieses API stellt zwei wichtige Paint-Momente zur Verfügung:

  • First Paint (FP): Zeitpunkt, zu dem irgendetwas gerendert wird. Beachten Sie, dass die Kennzeichnung des ersten Paint optional ist, nicht alle Benutzeragenten berichten darüber.
  • First Contentful Paint (FCP): Zeitpunkt, zu dem das erste Stück DOM-Text oder Bildinhalt gerendert wird.

Ein dritter wichtiger Paint-Moment wird von der LargestContentfulPaint-API bereitgestellt:

  • Largest Contentful Paint (LCP): Renderzeit des größten Bildes oder Textblocks, der im sichtbaren Bereich angezeigt wird, gemessen ab dem Zeitpunkt, zu dem die Seite mit dem Laden beginnt.

Die von diesem API bereitgestellten Daten helfen Ihnen, die Zeit zu minimieren, die Benutzer warten müssen, bevor sie den Inhalt der Seite sehen können. Die Verringerung der Zeit bis zu diesen wichtigen Paint-Momenten lässt Websites für Ihre Benutzer reaktionsschneller, leistungsfähiger und ansprechender erscheinen.

Wie andere Performance-APIs erweitert auch diese API PerformanceEntry.

PerformanceEntry PerformancePaintTiming

Instanz-Eigenschaften

Dieses Interface definiert direkt die folgenden Eigenschaften:

PerformancePaintTiming.paintTime

Gibt den timestamp zurück, wann die Renderphase endete und die Paint-Phase begann.

PerformancePaintTiming.presentationTime

Gibt den timestamp zurück, wann die gemalten Pixel tatsächlich auf dem Bildschirm gezeichnet wurden.

Es erweitert auch die folgenden PerformanceEntry-Eigenschaften, wobei sie sie qualifiziert und einschränkt, wie beschrieben:

PerformanceEntry.entryType

Gibt "paint" zurück.

PerformanceEntry.name

Gibt entweder "first-paint" oder "first-contentful-paint" zurück.

PerformanceEntry.startTime

Gibt den timestamp zurück, wann der Paint stattfand.

PerformanceEntry.duration

Gibt 0 zurück.

Instanz-Methoden

PerformancePaintTiming.toJSON()

Gibt eine JSON-Darstellung des PerformancePaintTiming-Objekts zurück.

Beispiele

Grundlegende Paint-Timings abrufen

Ein Beispiel mit einem PerformanceObserver, der benachrichtigt, wenn neue paint-Performance-Einträge in der Leistungstimeline des Browsers aufgezeichnet werden. Verwenden Sie die Option buffered, um auf Einträge vor der Erstellung des Observers zuzugreifen.

js
const observer = new PerformanceObserver((list) => {
  list.getEntries().forEach((entry) => {
    console.log(
      `The time to ${entry.name} was ${entry.startTime} milliseconds.`,
    );
    // Logs "The time to first-paint was 386.7999999523163 milliseconds."
    // Logs "The time to first-contentful-paint was 400.6999999284744 milliseconds."
  });
});

observer.observe({ type: "paint", buffered: true });

Ein Beispiel mit Performance.getEntriesByType(), das nur paint-Performance-Einträge anzeigt, die zum Zeitpunkt des Aufrufs dieser Methode in der Leistungstimeline des Browsers vorhanden sind:

js
const entries = performance.getEntriesByType("paint");
entries.forEach((entry) => {
  console.log(`The time to ${entry.name} was ${entry.startTime} milliseconds.`);
  // Logs "The time to first-paint was 386.7999999523163 milliseconds."
  // Logs "The time to first-contentful-paint was 400.6999999284744 milliseconds."
});

Getrennte Paint- und Präsentationstiming abrufen

Die Eigenschaften paintTime und presentationTime ermöglichen es Ihnen, spezifische Zeitwerte für den Beginn der Paint-Phase und das Zeichnen der gemalten Pixel auf dem Bildschirm abzurufen. paintTime ist generell interoperabel, während presentationTime von der Implementierung abhängt.

Dieses Beispiel baut auf dem zuvor gezeigten Beispiel Performance.getEntriesByType() auf und zeigt, wie Sie die Unterstützung für paintTime und presentationTime überprüfen und diese Werte abrufen können, falls sie verfügbar sind. In nicht unterstützenden Browsern ruft der Code die loadTime ab.

js
const entries = performance.getEntriesByType("paint");
entries.forEach((entry) => {
  if (entry.presentationTime) {
    console.log(
      "paintTime:",
      entry.paintTime,
      "presentationTime:",
      entry.presentationTime,
    );
  } else if (entry.paintTime) {
    console.log("paintTime:", entry.paintTime);
  } else {
    console.log("loadTime", entry.loadTime);
  }
});

Spezifikationen

Spezifikation
Paint Timing
# sec-PerformancePaintTiming

Browser-Kompatibilität

Siehe auch