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.
Die PerformancePaintTiming-Schnittstelle liefert Zeitinformationen zu „Paint“-Vorgängen (auch „Render“-Vorgänge genannt) beim Aufbau einer Webseite. „Paint“ bezeichnet die Umwandlung des Render-Baums in Bildschirmpixel.
Diese API liefert Informationen zu zwei wichtigen Paint-Zeitpunkten:
- First Paint (FP): Der Zeitpunkt, zu dem erstmals etwas dargestellt wird. Die Erfassung dieses Zeitpunkts ist optional; nicht alle User Agents melden ihn.
- First Contentful Paint (FCP): Der Zeitpunkt, zu dem erstmals inhaltstragender Inhalt dargestellt wird – also der erste DOM-Text oder Bildinhalt.
Einen dritten wichtigen Paint-Zeitpunkt liefert die LargestContentfulPaint-API:
- Largest Contentful Paint (LCP): Der Zeitpunkt, zu dem das größte im Viewport sichtbare Bild oder der größte Textblock dargestellt wird, gemessen ab dem Beginn des Seitenladens.
Die Daten dieser API helfen Ihnen, die Wartezeit zu verkürzen, bis Nutzer erste Inhalte der Website sehen können. Kürzere Zeiten bis zu diesen wichtigen Paint-Zeitpunkten lassen Websites reaktionsschneller, leistungsfähiger und ansprechender wirken.
Wie andere Performance-APIs erweitert diese API PerformanceEntry.
Instanzeigenschaften
Diese Schnittstelle definiert direkt die folgenden Eigenschaften:
PerformancePaintTiming.paintTimeSchreibgeschützt-
Gibt den
timestampzurück, zu dem die Rendering-Phase endete und die Paint-Phase begann. PerformancePaintTiming.presentationTimeSchreibgeschützt-
Gibt den
timestampzurück, zu dem die erzeugten Pixel tatsächlich auf dem Bildschirm angezeigt wurden.
Sie erweitert außerdem die folgenden Eigenschaften von PerformanceEntry und legt deren Werte wie beschrieben fest:
PerformanceEntry.entryTypeSchreibgeschützt-
Gibt
"paint"zurück. PerformanceEntry.nameSchreibgeschützt-
Gibt entweder
"first-paint"oder"first-contentful-paint"zurück. PerformanceEntry.startTimeSchreibgeschützt-
Gibt den
timestampzurück, zu dem der Paint-Vorgang stattfand. PerformanceEntry.durationSchreibgeschützt-
Gibt 0 zurück.
Instanzmethoden
PerformancePaintTiming.toJSON()-
Gibt ein JSON-serialisierbares einfaches Objekt zurück, das das
PerformancePaintTiming-Objekt repräsentiert. Wird vonJSON.stringify()automatisch aufgerufen.
Beispiele
>Grundlegende Paint-Zeiten abrufen
Dieses Beispiel verwendet einen PerformanceObserver, der über neue paint-Performance-Einträge informiert, sobald sie in der Performance-Zeitleiste des Browsers erfasst werden. Mit der Option buffered können Sie auch auf Einträge zugreifen, die vor der Erstellung des Observers erfasst wurden.
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 die paint-Performance-Einträge an, die zum Zeitpunkt ihres Aufrufs in der Performance-Zeitleiste des Browsers vorhanden sind:
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 Anzeigezeiten abrufen
Mit den Eigenschaften paintTime und presentationTime können Sie die Zeitpunkte abrufen, zu denen die Paint-Phase beginnt beziehungsweise die erzeugten Pixel auf dem Bildschirm angezeigt werden. paintTime wird browserübergreifend weitgehend unterstützt, während presentationTime von der Implementierung abhängt.
Dieses Beispiel baut auf dem vorherigen Beispiel mit Performance.getEntriesByType() auf. Es zeigt, wie Sie die Unterstützung für paintTime und presentationTime prüfen und die Werte abrufen, sofern sie verfügbar sind. In Browsern, die diese Eigenschaften nicht unterstützen, ruft der Code loadTime ab.
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> |