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 Zeitinformationen zu „Paint“-Vorgängen (auch „Render“-Vorgänge genannt) beim Aufbau einer Webseite. „Paint“ bezeichnet die Umwandlung des Render-Baums in Pixel auf dem Bildschirm.

Diese API liefert Informationen zu zwei wichtigen Paint-Zeitpunkten:

  • First Paint (FP): Der Zeitpunkt, zu dem erstmals etwas gerendert wird. Die Erfassung des First Paint ist optional; nicht alle User Agents melden ihn.
  • First Contentful Paint (FCP): Der Zeitpunkt des ersten Contentful Paint – wenn erstmals DOM-Text oder Bildinhalt gerendert wird.

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

  • Largest Contentful Paint (LCP): Der Zeitpunkt, zu dem das größte im Viewport sichtbare Bild oder der größte Textblock gerendert wird, gemessen ab dem Beginn des Seitenladevorgangs.

Die von dieser API bereitgestellten Daten helfen Ihnen, die Wartezeit zu verkürzen, bis Nutzer die ersten Inhalte der Website sehen können. Wenn Sie die Zeit bis zu diesen wichtigen Paint-Zeitpunkten verkürzen, wirkt die Website auf Ihre Nutzer reaktionsschneller, leistungsfähiger und ansprechender.

Wie andere Performance-APIs erweitert diese API PerformanceEntry.

PerformanceEntry PerformancePaintTiming

Instanzeigenschaften

Dieses Interface definiert direkt die folgenden Eigenschaften:

PerformancePaintTiming.paintTime Schreibgeschützt

Gibt den timestamp zurück, zu dem die Rendering-Phase endete und die Paint-Phase begann.

PerformancePaintTiming.presentationTime Schreibgeschützt

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

Außerdem erweitert es die folgenden Eigenschaften von PerformanceEntry und legt deren Werte wie beschrieben fest:

PerformanceEntry.entryType Schreibgeschützt

Gibt "paint" zurück.

PerformanceEntry.name Schreibgeschützt

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

PerformanceEntry.startTime Schreibgeschützt

Gibt den timestamp zurück, zu dem der Paint-Vorgang stattfand.

PerformanceEntry.duration Schreibgeschützt

Gibt 0 zurück.

Instanzmethoden

PerformancePaintTiming.toJSON()

Gibt ein einfaches, JSON-serialisierbares Objekt zurück, das das PerformancePaintTiming-Objekt darstellt. Wird automatisch von JSON.stringify() aufgerufen.

Beispiele

Grundlegende Paint-Zeitpunkte ermitteln

Dieses Beispiel verwendet einen PerformanceObserver, der über neue paint-Performance-Einträge benachrichtigt, sobald sie in der Performance-Timeline des Browsers erfasst werden. Verwenden Sie die Option buffered, um auch auf Einträge zuzugreifen, die vor der Erstellung des Observers erfasst wurden.

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 });

Dieses Beispiel verwendet Performance.getEntriesByType(). Die Methode zeigt nur paint-Performance-Einträge an, die zum Zeitpunkt des Aufrufs in der Performance-Timeline 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."
});

Separate Zeitpunkte für Paint und Darstellung ermitteln

Mit den Eigenschaften paintTime und presentationTime können Sie die Zeitpunkte für den Beginn der Paint-Phase und für das Zeichnen der erzeugten Pixel auf dem Bildschirm getrennt abrufen. paintTime ist weitgehend interoperabel, während presentationTime von der Implementierung abhängt.

Dieses Beispiel baut auf dem vorherigen Beispiel mit Performance.getEntriesByType() auf. Es zeigt, wie Sie prüfen, ob paintTime und presentationTime unterstützt werden, und die Werte abrufen, falls sie verfügbar sind. In Browsern, die diese Eigenschaften nicht unterstützen, ruft der Code 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