First Contentful Paint (FCP)

Unterstützte Browser

  • 60
  • 79
  • 84
  • 14.1

Quelle

First Contentful Paint (FCP) ist ein wichtiger nutzerorientierter Messwert zum Messen der wahrgenommenen Ladegeschwindigkeit. Es markiert den ersten Punkt auf der Zeitleiste für den Seitenaufbau, an dem der Nutzer alles auf dem Bildschirm sehen kann. Ein schneller FCP kann dem Nutzer versichern, dass etwas passiert.

FCP misst die Zeit vom ersten Aufrufen der Seite bis zu dem Zeitpunkt, zu dem ein Teil des Seiteninhalts auf dem Bildschirm gerendert wird. Für diesen Messwert bezieht sich „Inhalt“ auf Text, Bilder (einschließlich Hintergrundbilder), <svg>-Elemente oder nicht-weiße <canvas>-Elemente.

FCP-Zeitachse von google.com
In dieser Ladezeitachse findet FCP im zweiten Frame statt, da dort die ersten Text- und Bildelemente auf dem Bildschirm gerendert werden.

Beim Rendern des ersten Inhaltselements wird nicht der gesamte Inhalt gerendert. Das ist eine wichtige Unterscheidung zwischen FCP und Largest Contentful Paint (LCP), bei dem gemessen wird, wann der Hauptinhalt der Seite fertig geladen ist.

Was ist ein guter FCP-Wert?

Für eine gute Nutzerfreundlichkeit dürfen Websites einen FCP-Wert von maximal 1, 8 Sekunden haben. Damit Sie dieses Ziel für die meisten Nutzer erreichen, sollten Sie das 75. Perzentil der Seitenaufbauvorgänge, segmentiert nach Mobilgeräten und Desktop-Geräten, messen.

Gute FCP-Werte sind maximal 1,8 Sekunden, schlechte Werte größer als 3,0 Sekunden und alles dazwischen muss verbessert werden
Gute FCP-Werte betragen maximal 1,8 Sekunden. Schlechte Werte liegen über 3,0 Sekunden.

FCP-Messung

FCP kann im Lab oder vor Ort gemessen werden und ist in den folgenden Tools verfügbar:

Außendienst-Tools

Lab-Tools

FCP in JavaScript messen

Um FCP in JavaScript zu messen, verwenden Sie die Paint Timing API. Das folgende Beispiel zeigt, wie Sie einen PerformanceObserver erstellen, der auf einen paint-Eintrag mit dem Namen first-contentful-paint wartet und ihn in der Console protokolliert.

new PerformanceObserver((entryList) => {
  for (const entry of entryList.getEntriesByName('first-contentful-paint')) {
    console.log('FCP candidate:', entry.startTime, entry);
  }
}).observe({type: 'paint', buffered: true});

In diesem Beispiel gibt der protokollierte first-contentful-paint-Eintrag an, wann das erste Inhaltselement dargestellt wurde. In einigen Fällen eignet sich dieser Eintrag jedoch nicht zum Messen von FCP.

Im folgenden Abschnitt werden die Unterschiede zwischen den Informationen in der API und der Berechnung des Messwerts aufgeführt.

Unterschiede zwischen Messwert und API

  • Die API gibt einen first-contentful-paint-Eintrag für Seiten aus, die auf einem Hintergrund-Tab geladen werden. Diese Seiten sollten jedoch bei der Berechnung von FCP ignoriert werden. Das Timing der ersten Farbe wird nur dann berücksichtigt, wenn die Seite die gesamte Zeit im Vordergrund zu sehen war.
  • Die API meldet keine first-contentful-paint-Einträge, wenn die Seite aus dem Back-Forward-Cache wiederhergestellt wird. Allerdings sollte in diesen Fällen der FCP-Wert gemessen werden, da der Nutzer sie als unterschiedliche Seitenaufrufe empfindet.
  • Die API meldet möglicherweise keine Paint-Timings von ursprungsübergreifenden iFrames. Damit FCP jedoch richtig gemessen werden kann, müssen Sie alle Frames berücksichtigen. Subframes können die API verwenden, um ihre Paint-Times zur Aggregation an den übergeordneten Frame zu melden.
  • Die API misst den FCP-Wert ab Beginn der Navigation. Bei vor gerenderten Seiten sollte FCP jedoch ab activationStart gemessen werden, da dies der FCP-Zeit entspricht, die der Nutzer sieht.

Anstatt sich all die subtilen Unterschiede zu merken, können Entwickler die web-vitals-JavaScript-Bibliothek verwenden, um den FCP-Wert zu messen. Dadurch werden diese Unterschiede nach Möglichkeit für Sie verarbeitet (außer in iFrames):

import {onFCP} from 'web-vitals';

// Measure and log FCP as soon as it's available.
onFCP(console.log);

Im Quellcode für onFCP() findest du ein vollständiges Beispiel für die Messung von FCP in JavaScript.

FCP verbessern

Wenn Sie erfahren möchten, wie Sie FCP für eine bestimmte Website verbessern können, können Sie eine Lighthouse-Leistungsüberprüfung durchführen und dabei alle Möglichkeiten oder Diagnosen berücksichtigen, die aus der Prüfung vorgeschlagen werden.

Informationen zum Verbessern von FCP im Allgemeinen für jede Website finden Sie in den folgenden Leistungsleitfäden:

Änderungsprotokoll

Gelegentlich werden Fehler in den APIs entdeckt, die zum Messen von Messwerten verwendet werden, und manchmal in den Definitionen der Messwerte selbst. Aus diesem Grund müssen manchmal Änderungen vorgenommen werden, die sich in Ihren internen Berichten und Dashboards als Verbesserungen oder Regressionen zeigen lassen.

Alle Änderungen an der Implementierung oder an der Definition dieser Messwerte werden in diesem Änderungsprotokoll aufgeführt.

Wenn du Feedback zu diesen Messwerten hast, kannst du es in der Google-Gruppe „web-vitals-feedback“ einreichen.