LargestContentfulPaint

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Das LargestContentfulPaint-Interface liefert Timing-Informationen über die größte Bild- oder Textdarstellung vor der Benutzereingabe auf einer Webseite.

Beschreibung

Der wichtigste Moment, den diese API bereitstellt, ist die Largest Contentful Paint (LCP)-Metrik. Sie liefert die Renderzeit des größten Bildes oder Textblocks, der innerhalb des Viewports sichtbar ist und erfasst wird, ab dem Moment, wenn die Seite zu laden beginnt. Die folgenden Elemente werden bei der Bestimmung des LCP berücksichtigt:

Um die Renderzeiten anderer Elemente zu messen, verwenden Sie die PerformanceElementTiming API.

Zusätzliche wichtige Darstellungszeitpunkte werden von der PerformancePaintTiming API bereitgestellt:

  • First Paint (FP): Zeit, wann irgendetwas gerendert wird. Beachten Sie, dass die Markierung des ersten Paints optional ist, nicht alle User Agents melden es.
  • First Contentful Paint (FCP): Zeit, wann das erste Stück DOM-Text oder Bildinhalt gerendert wird.

LargestContentfulPaint erbt von PerformanceEntry.

PerformanceEntry LargestContentfulPaint

Instanzeigenschaften

Dieses Interface erweitert die folgenden Eigenschaften von PerformanceEntry, indem es die Eigenschaften wie folgt qualifiziert und einschränkt:

PerformanceEntry.entryType Schreibgeschützt Experimentell

Gibt "largest-contentful-paint" zurück.

PerformanceEntry.name Schreibgeschützt Experimentell

Gibt immer einen leeren String zurück.

PerformanceEntry.startTime Schreibgeschützt Experimentell

Gibt den Wert der renderTime dieses Eintrags zurück, falls dieser nicht 0 ist, ansonsten den Wert der loadTime dieses Eintrags.

PerformanceEntry.duration Schreibgeschützt Experimentell

Gibt 0 zurück, da duration auf dieses Interface nicht anwendbar ist.

Es unterstützt auch die folgenden Eigenschaften:

LargestContentfulPaint.element Schreibgeschützt

Das Element, das die aktuelle größte contentful paint ist.

LargestContentfulPaint.renderTime Schreibgeschützt

Die Zeit, zu der das Element auf dem Bildschirm gerendert wurde. Möglicherweise nicht verfügbar, wenn das Element ein Cross-Origin-Bild ist, das ohne das Timing-Allow-Origin-Header geladen wurde.

LargestContentfulPaint.loadTime Schreibgeschützt

Die Zeit, zu der das Element geladen wurde.

LargestContentfulPaint.size Schreibgeschützt

Die intrinsische Größe des Elements wird als Fläche (Breite * Höhe) zurückgegeben.

LargestContentfulPaint.id Schreibgeschützt

Die ID des Elements. Diese Eigenschaft gibt einen leeren String zurück, wenn keine ID vorhanden ist.

LargestContentfulPaint.url Schreibgeschützt

Falls das Element ein Bild ist, die URL des Bildanforderung.

Instanzmethoden

Dieses Interface erbt auch von PerformanceEntry Methoden.

LargestContentfulPaint.toJSON()

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

Beispiele

Beobachten der größten contentful paint

Im folgenden Beispiel wird ein Observer registriert, um die größte contentful paint während des Ladens der Seite zu erhalten. Das buffered-Flag wird verwendet, um auf Daten vor der Erstellung des Observers zuzugreifen.

Die LCP-API analysiert alle Inhalte, die sie findet (einschließlich Inhalte, die aus dem DOM entfernt werden). Wenn neue größere Inhalte gefunden werden, wird ein neuer Eintrag erstellt. Die Suche nach größeren Inhalten wird beendet, wenn Scroll- oder Eingabeereignisse auftreten, da diese Ereignisse wahrscheinlich neue Inhalte auf der Webseite einführen. Daher ist die LCP der letzte vom Observer gemeldete Leistungs-Eintrag.

js
const observer = new PerformanceObserver((list) => {
  const entries = list.getEntries();
  const lastEntry = entries[entries.length - 1]; // Use the latest LCP candidate
  console.log("LCP:", lastEntry.startTime);
  console.log(lastEntry);
});
observer.observe({ type: "largest-contentful-paint", buffered: true });

Cross-Origin-Bilddarstellungszeit

Aus Sicherheitsgründen ist der Wert der renderTime-Eigenschaft 0, wenn die Ressource eine Cross-Origin-Anforderung ist. Stattdessen wird die loadTime offengelegt. Um Informationen zur Cross-Origin-Renderzeit offenzulegen, muss der Timing-Allow-Origin HTTP-Antwort-Header gesetzt werden.

Zum Beispiel, um https://developer.mozilla.org zu erlauben, die renderTime zu sehen, sollte die Cross-Origin-Ressource senden:

http
Timing-Allow-Origin: https://developer.mozilla.org

Wie im Codebeispiel gezeigt, können Sie startTime verwenden, die den Wert der renderTime des Eintrags zurückgibt, wenn dieser nicht 0 ist und ansonsten den Wert der loadTime dieses Eintrags. Es wird jedoch empfohlen, den Timing-Allow-Origin Header zu setzen, damit die Metriken genauer sind.

Wenn Sie startTime verwenden, können Sie etwaige Ungenauigkeiten kennzeichnen, indem Sie überprüfen, ob renderTime verwendet wurde:

js
const isAccurateLCP = entry.renderTime ? true : false;

Spezifikationen

Specification
Largest Contentful Paint
# sec-largest-contentful-paint-interface

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch