Web Vitals mit Lighthouse optimieren

Möglichkeiten zur Verbesserung der Nutzererfahrung mit den Webtools von Chrome

Addi Osmani
Addy Osmani

Heute geht es um neue Toolfunktionen in Lighthouse, PageSpeed und DevTools, mit denen ihr herausfinden könnt, wie eure Website die Web Vitals verbessern kann.

Zur Erinnerung: Lighthouse ist ein automatisiertes Open-Source-Tool zur Verbesserung der Qualität von Webseiten. Sie finden sie in der Suite der Chrome-Entwicklertools zur Fehlerbehebung und können sie auf jeder Webseite ausführen, ob öffentlich oder, für die eine Authentifizierung erforderlich ist. Sie finden Lighthouse auch in PageSpeed Insights, CI und WebPageTest.

Lighthouse 7.x enthält neue Funktionen wie Element-Screenshots, die die visuelle Prüfung von Teilen Ihrer UI erleichtern, die sich auf Messwerte zur Nutzerfreundlichkeit auswirken (z.B. welche Knoten zur Layoutverschiebung beitragen).

PageSpeed Insights bietet außerdem Unterstützung für Element-Screenshots. So lassen sich Probleme bei einmaligen Leistungsläufen von Seiten leichter erkennen.

Screenshots von Elementen, in denen der DOM-Knoten hervorgehoben ist, der zum Layout Shift auf der Seite beiträgt

Core Web Vitals messen

Lighthouse kann die Core Web Vitals-Messwerte synthetisch messen, darunter Largest Contentful Paint, Cumulative Layout Shift und Total Blocking Time (ein Lab-Proxy für First Input Delay). Diese Messwerte spiegeln die Ladezeiten, die Layoutstabilität und die Interaktionsbereitschaft wider. Andere Messwerte wie First Contentful Paint, die wir in zukünftigen Core Web Vitals vorstellen, werden ebenfalls berücksichtigt.

Der Bereich „Messwerte“ des Lighthouse-Berichts enthält Lab-Versionen dieser Messwerte. Sie können dies als Zusammenfassung verwenden, um zu sehen, welche Aspekte der User Experience Ihre Aufmerksamkeit erfordern.

Lighthouse-Leistungsmesswerte
Web Vitals-Bereich im Leistungsbereich der Entwicklertools
Die neue Option „Web Vitals“ im Bereich „Leistung“ der Entwicklertools enthält einen Track, in dem Messwertmomente hervorgehoben werden, z. B. Layout Shift (LS) oben.

Feldmesswerte, wie sie im UX-Bericht von Chrome oder RUM zu finden sind, unterliegen dieser Einschränkung nicht und sind eine wertvolle Ergänzung zu den Labordaten, da sie die Erfahrung realer Nutzer widerspiegeln. Felddaten bieten nicht die Art von Diagnosedaten, die Sie im Labor erhalten, daher gehen die beiden Hand in Hand.

Verbesserungsmöglichkeiten für Web Vitals ermitteln

Das Largest Contentful Paint-Element ermitteln

Der LCP steht für die wahrgenommene Ladeerfahrung. Sie kennzeichnet den Punkt beim Seitenaufbau, an dem der primäre oder der „größte“ Inhalt geladen wurde und für den Nutzer sichtbar ist.

Lighthouse hat die Prüfung „Largest Contentful Paint“, mit der ermittelt wird, welches Element der Largest Contentful Paint war. Wenn Sie mit der Maus auf das Element zeigen, wird es im Browser-Hauptfenster hervorgehoben.

Largest Contentful Paint-Element

Wenn dieses Element ein Bild ist, sind diese Informationen ein nützlicher Hinweis darauf, dass Sie das Laden dieses Bildes optimieren können. Lighthouse umfasst eine Reihe von Bildoptimierungsprüfungen, mit denen Sie herausfinden können, ob Ihre Bilder besser komprimiert, in der Größe angepasst oder in einem optimalen modernen Bildformat bereitgestellt werden können.

Prüfung der richtigen Bildgröße

Vielleicht finden Sie auch das LCP Bookmarklet von Annie Sulivan nützlich, um das LCP-Element mit einem roten Rechteck mit nur einem Klick schnell zu identifizieren.

LCP-Element mit einem Bookmarklet hervorheben

Später erkannte Bilder vorab laden, um den LCP zu verbessern

Wenn Sie den Largest Contentful Paint verbessern möchten, laden Sie wichtige Hero-Images vorab, wenn sie vom Browser erst spät erkannt werden. Eine späte Erkennung kann auftreten, wenn ein JavaScript-Bundle geladen werden muss, bevor das Bild sichtbar ist.

Das größte Contentful Paint-Bild vorab laden

Es gibt einige häufig gestellte Fragen, die uns zum Vorabladen von LCP-Bildern gestellt werden und die möglicherweise auch kurz behandelt werden sollten.

Können responsive Bilder vorab geladen werden? Ja. Nehmen wir an, Sie haben ein responsives Hero-Image, wie unten mit srcset und sizes angegeben:

<img src="lighthouse.jpg"
          srcset="lighthouse_400px.jpg 400w,
                  lighthouse_800px.jpg 800w,
                  lighthouse_1600px.jpg 1600w" sizes="50vw" alt="A helpful
Lighthouse">

Dank der Attribute imagesrcset und imagesizes, die dem Attribut link hinzugefügt wurden, können wir ein responsives Bild mit derselben Bildauswahllogik wie srcset und sizes vorab laden:

<link rel="preload" as="image" href="lighthouse.jpg"
           imagesrcset="lighthouse_400px.jpg 400w,
                        lighthouse_800px.jpg 800w,
                        lighthouse_1600px.jpg 1600w"
imagesizes="50vw">

Werden bei der Prüfung auch Möglichkeiten zum Vorabladen hervorgehoben, wenn das LCP-Bild über den CSS-Hintergrund definiert wird? Ja.

Jedes Bild, das über den CSS-Hintergrund oder <img> als LCP-Bild gekennzeichnet ist, kommt infrage, wenn es in einer Wasserfalltiefe von drei oder mehr erkannt wird.

Lazy Loading von nicht sichtbaren Bildern und Vermeidung des LCP-Werts

Nicht sichtbare Bilder, die für die Nutzerfreundlichkeit nicht entscheidend sind, können Lazy-Loading aufweisen. Bei dieser Methode wird der Download eines Bildes verzögert, bis der Nutzer in dessen Nähe scrollt. Dadurch können Netzwerkkonflikte für kritische Assets reduziert und in einigen Fällen der LCP-Wert verbessert werden. Die Prüfung Nicht sichtbare Bilder verschieben kann hier Abhilfe schaffen:

Nicht sichtbare Bilder verschieben

Für wichtige Bilder, die ohne Scrollen sichtbar sind, z. B. das Largest Contentful Paint-Bild, sollte kein Lazy Loading verwendet werden. Andernfalls kann es zu Verzögerungen beim Laden des LCP-Bilds kommen. Lighthouse zeigt bei der Prüfung "Largest Contentful Paint-Bild mit Lazy Loading" falsch geladene LCP-Bilder an:

Lazy Loading von LCP-Bildern vermeiden

CLS-Beiträge identifizieren

Cumulative Layout Shift ist ein Maß für die visuelle Stabilität. Sie gibt an, wie stark sich der Inhalt einer Seite visuell bewegt. Lighthouse bietet ein Audit zum Debuggen von CLS mit dem Namen „Große Layoutverschiebungen vermeiden“.

Bei dieser Prüfung werden DOM-Elemente hervorgehoben, die am meisten zu Verschiebungen der Seite beitragen. In der Spalte „Element“ auf der linken Seite sehen Sie die Liste dieser DOM-Elemente und rechts ihren CLS-Gesamtbeitrag.

Die Prüfung zur Vermeidung großer Layoutverschiebungen in Lighthouse, in denen relevante DOM-Knoten hervorgehoben werden, die zu CLS beitragen

Dank der neuen Funktion für Screenshots von Lighthouse-Elementen können wir sowohl eine visuelle Vorschau der wichtigsten Elemente sehen, die im Audit erfasst wurden, als auch durch Klicken zum Zoomen die Ansicht übersichtlicher gestalten:

Wenn Sie auf einen Screenshot eines Elements klicken, wird es maximiert.

Für CLS nach dem Laden kann eine dauerhafte Visualisierung mit Rechtecken hilfreich sein, welche Elemente am meisten zum CLS beigetragen haben. Diese Funktion findest du in Tools von Drittanbietern wie dem Core Web Vitals-Dashboard von SpeedCurve. Ich liebe es, den Defaced's Layout Shift GIF Generator für Folgendes zu verwenden:

der Layout Shift Generator

Für eine websiteweite Ansicht von Problemen mit Layout Shifts ist der Core Web Vitals-Bericht der Search Console sehr hilfreich. Dadurch kann ich die Arten von Seiten meiner Website mit einem hohen CLS sehen (in diesem Fall kann ich selbst herausfinden, mit welchen Vorlagenbereichen ich meine Zeit verbringen muss):

Search Console mit Anzeige von CLS-Problemen

CLS aus Bildern ohne Abmessungen erkennen

Sie können die Cumulative Layout Shift beschränken, die durch Bilder ohne Abmessungen verursacht wird. Fügen Sie dafür Breiten- und Höhenattribute für Bilder und Videoelemente ein. Dadurch wird sichergestellt, dass der Browser während des Ladens des Bildes die richtige Menge an Platz im Dokument zuweisen kann.

Bildelemente ohne explizite Breite und Höhe prüfen

Unter Höhe und Breite von Bildern ist wieder wichtig finden Sie eine gute Zusammenfassung der Bedeutung von Bildabmessungen und -seitenverhältnis.

CLS aus Anzeigen erkennen

Mit Publisher Ads for Lighthouse können Sie herausfinden, wie sich die Ladezeit von Anzeigen auf Ihrer Seite verbessern lässt. Dazu gehören beispielsweise Beiträge zum Layout Shift und umfangreiche Aufgaben, die festlegen, wie schnell Ihre Seite von Nutzern verwendet werden kann. In Lighthouse können Sie dies über Community-Plug-ins aktivieren.

Prüfungen im Zusammenhang mit Anzeigen, die Möglichkeiten zeigen, wie sich die Anfrage und Layout Shifts verkürzen lassen

Denken Sie daran, dass Anzeigen einer der größten Bestandteile von Layoutverschiebungen im Web sind. Folgendes ist wichtig:

  • Vorsicht beim Platzieren von nicht fixierten Anzeigen oben im Darstellungsbereich
  • Eliminieren von Verschiebungen, indem die größtmögliche Größe für die Anzeigenfläche reserviert wird

Vermeiden Sie nicht zusammengesetzte Animationen

Nicht zusammengesetzte Animationen können auf Low-End-Geräten unregelmäßig werden, wenn der Hauptthread aufgrund von umfangreichen JavaScript-Aufgaben nicht ausgeführt wird. Solche Animationen können zu Layoutverschiebungen führen.

Wenn Chrome feststellt, dass eine Animation nicht zusammengesetzt werden konnte, wird sie an ein Entwicklertools-Trace von Lighthouse gemeldet. So kann aufgelistet werden, welche Elemente mit Animationen aus welchem Grund nicht zusammengesetzt wurden. Sie finden diese im Audit-Log Nicht zusammengesetzte Animationen vermeiden.

Prüfung zur Vermeidung nicht zusammengesetzter Animationen

Fehlerbehebung bei First Input Delay / Total Blocking Time / Long Tasks

Die erste Eingabe misst die Zeit ab der ersten Interaktion eines Nutzers mit einer Seite (z.B. wenn er auf einen Link klickt, auf eine Schaltfläche tippt oder ein benutzerdefiniertes JavaScript-Steuerelement verwendet) bis zu dem Zeitpunkt, zu dem der Browser als Reaktion auf diese Interaktion mit der Verarbeitung von Event-Handlern beginnen kann. Lange JavaScript-Aufgaben können sich auf diesen Messwert und den Proxy für diesen Messwert, die gesamte Blockierzeit, auswirken.

Audit zum Vermeiden langer Hauptthread-Aufgaben

Lighthouse enthält die Prüfung Lange Aufgaben des Hauptthreads vermeiden, in der die längsten Aufgaben im Hauptthread aufgeführt werden. Dies kann hilfreich sein, um die Hauptursachen für die Eingabeverzögerung zu finden. In der linken Spalte sehen Sie die URL der Skripts, die für lange Hauptthread-Aufgaben zuständig sind.

Rechts sehen wir die Dauer dieser Aufgaben. Zur Erinnerung: Lange Aufgaben sind Aufgaben, die länger als 50 Millisekunden ausgeführt werden. Dies wird davon ausgegangen, dass der Hauptthread lange genug blockiert wird, um sich auf die Framerate oder die Eingabelatenz zu auswirken.

Wenn Sie Drittanbieterdienste für das Monitoring in Betracht ziehen, gefällt mir auch die Zeitachse für die Ausführung des Hauptthreads in Calibre zur Visualisierung dieser Kosten. Hier werden sowohl übergeordnete als auch untergeordnete Aufgaben hervorgehoben, die zu langen Aufgaben führen, die sich auf die Interaktivität auswirken.

In Calibre wurde die Zeitachse der Hauptthreadausführung in Calibre

Du kannst Netzwerkanfragen blockieren, um die Auswirkungen vor und nach den Auswirkungen in Lighthouse zu sehen

Die Chrome-Entwicklertools unterstützen das Blockieren von Netzwerkanfragen, um die Auswirkungen einzelner Ressourcen zu sehen, die entfernt wurden oder nicht verfügbar sind. Dies kann hilfreich sein, um die Kosten einzelner Skripts (z. B. Einbettungen von Drittanbietern oder Trackern) für Messwerte wie Gesamtblockzeit (Total Blocking Time, TBT) und Zeit bis Interaktivität zu verstehen.

Das Blockieren von Netzwerkanfragen funktioniert auch mit Lighthouse. Sehen wir uns kurz den Lighthouse-Bericht für eine Website an. Die Leistungsbewertung liegt bei 63/100 bei einer TBT von 400 ms. Im Code wird auf dieser Website ein nicht erforderlicher Intersection Observer-Polyfill in Chrome geladen. Dann blockieren wir es!

Blockierung von Netzwerkanfragen

Wir können im Netzwerkbereich der Entwicklertools mit der rechten Maustaste auf ein Skript und dann auf Block Request URL klicken, um es zu blockieren. Hier verwenden wir den Intersection Observer-Polyfill.

Anfrage-URLs in den Entwicklertools blockieren

Als Nächstes können wir Lighthouse noch einmal ausführen. Dieses Mal sehen wir, dass sich unsere Leistungsbewertung verbessert hat (70/100), da die gesamte Blockierzeit (400 ms => 300 ms) vorhanden ist.

Nachher-Ansicht zum Blockieren kostspieliger Netzwerkanfragen

Kostspielige Einbettungen von Drittanbietern durch eine Fassade ersetzen

Häufig werden Drittanbieterressourcen verwendet, um Videos, Beiträge in sozialen Medien oder Widgets in Seiten einzubetten. Standardmäßig werden die meisten Einbettungen sofort geladen und können kostspielige Nutzlasten enthalten, die sich negativ auf die Nutzererfahrung auswirken. Das ist verschwenderisch, wenn der Drittanbieter nicht kritisch ist (z.B. wenn der Nutzer scrollen muss, bevor er es sieht).

Ein Muster zur Verbesserung der Leistung solcher Widgets ist das Lazy Loading bei Nutzerinteraktion. Dazu wird eine einfache Vorschau des Widgets (eine Fassade) gerendert und die Vollversion nur geladen, wenn ein Nutzer damit interagiert. In Lighthouse wird ein Audit durchgeführt, bei dem Ressourcen von Drittanbietern empfohlen werden, die mit einer Fassade Lazy Loading geladen werden können, z. B. YouTube-Videoeinbettungen.

Audit, in dem hervorgehoben wird, dass einige kostspielige Drittanbieterressourcen ersetzt werden können

Zur Erinnerung: Lighthouse hebt Drittanbietercode hervor, der den Hauptthread länger als 250 ms blockiert. Dadurch können alle Arten von Drittanbieterskripts sichtbar gemacht werden (einschließlich von Google verfasster Skripts), deren Darstellung sich besser aufsetzen oder Lazy Loading lohnen würde, wenn für das Rendern gescrollt werden muss, um es zu sehen.

Kosten für JavaScript-Prüfungen durch Drittanbieter senken

Über die Core Web Vitals hinaus

Neben den Core Web Vitals bieten die neuesten Versionen von Lighthouse und PageSpeed Insights auch konkrete Hinweise dazu, wie Sie die Ladezeit von JavaScript-lastigen Webanwendungen verbessern können, wenn Sie Source Maps aktiviert haben.

Dazu gehören eine wachsende Anzahl von Prüfungen zur Reduzierung der Kosten für JavaScript auf Ihrer Seite, z. B. zur Reduzierung der Abhängigkeit von Polyfills und Duplikaten, die für die Nutzererfahrung möglicherweise nicht erforderlich sind.

Weitere Informationen zu den Core Web Vitals-Tools finden Sie im Twitter-Konto des Lighthouse-Teams und unter Neues in den Entwicklertools.

Hero-Image von Mercedes Mehling auf Unsplash