Core Web Vitals: Messen und Verbessern der Web-Performance
Sie haben eine moderne Web-App entwickelt, aber Benutzer beschweren sich, dass sie langsam ist. Auch die Suchmaschinen-Rankings könnten darunter leiden. Core Web Vitals (CWV) sind Googles Metriken für die User Experience: Largest Contentful Paint (LCP), Interaction to Next Paint (INP) und Cumulative Layout Shift (CLS). Dieser Leitfaden zeigt Ihnen, wie Sie sie genau messen und effektiv verbessern.
Was sind Core Web Vitals?
Core Web Vitals sind drei Metriken, die Schlüsselaspekte der User Experience quantifizieren:
- LCP misst die Ladeleistung. Er markiert, wann das größte Inhaltselement (Bild, Textblock, Video) sichtbar wird. Ziel: ≤2,5 Sekunden.
- INP misst die Reaktionsfähigkeit. Er erfasst die Latenz aller Interaktionen (Klicks, Taps, Tastendrücke) und meldet die Verzögerung im Worst-Case (oder nahe daran). Ziel: ≤200 Millisekunden.
- CLS misst die visuelle Stabilität. Er quantifiziert unerwartete Layout-Verschiebungen während des Ladens. Ziel: ≤0,1.
Diese Metriken werden sowohl im Feld (von echten Nutzern) als auch im Labor (in kontrollierten Umgebungen) gemessen. Beides ist wichtig.
So messen Sie Core Web Vitals
Sie benötigen sowohl Feld- als auch Labordaten, um Probleme zu diagnostizieren.
Felddaten (Real User Monitoring)
Felddaten spiegeln tatsächliche Nutzererfahrungen über Geräte und Netzwerke hinweg wider. Nutzen Sie diese Quellen:
- Chrome User Experience Report (CrUX): Öffentlicher Datensatz mit Real-User-Metriken für Millionen von Websites. Zugriff über PageSpeed Insights oder die CrUX-API.
- Google Search Console: Der Core-Web-Vitals-Bericht zeigt URL-Gruppen, die basierend auf CrUX-Daten Aufmerksamkeit benötigen.
- Web Vitals JavaScript-Bibliothek: Fügen Sie die
web-vitals-Bibliothek zu Ihrer Website hinzu und senden Sie Messungen an Ihren Analytics-Endpunkt.
import {onLCP, onINP, onCLS} from 'web-vitals';
function sendToAnalytics(metric) {
const body = JSON.stringify(metric);
navigator.sendBeacon('/analytics', body);
}
onLCP(sendToAnalytics);
onINP(sendToAnalytics);
onCLS(sendToAnalytics);
Labordaten (Synthetisches Testen)
Labortools simulieren das Laden in einer kontrollierten Umgebung, was sie ideal für Debugging und CI-Integration macht.
- Lighthouse: In Chrome DevTools integriert, als CLI verfügbar und in PageSpeed Insights integriert. Es meldet Labormetriken und Optimierungsmöglichkeiten.
- WebPageTest: Erweiterte Tests mit benutzerdefinierten Netzwerkbedingungen und Filmstreifen.
- Chrome DevTools Performance-Panel: Aufzeichnen und Analysieren der Laufzeitperformance, einschließlich langer Aufgaben, die INP beeinflussen.
Best Practice: Verwenden Sie Labordaten, um Fixes zu identifizieren, und Felddaten, um die Auswirkung zu validieren.
Verbesserung von Largest Contentful Paint (LCP)
LCP wird meist durch das Hero-Bild oder einen großen Textblock dominiert. Optimieren Sie diese:
- Optimieren Sie die LCP-Ressource: Komprimieren Sie Bilder (verwenden Sie WebP/AVIF), liefern Sie responsive Größen mit
srcsetund laden Sie das LCP-Bild vor, wenn es kritisch ist. - Beseitigen Sie render-blockierende Ressourcen: Binden Sie kritisches CSS inline ein, verzögern Sie nicht-kritisches CSS und JavaScript.
- Verbessern Sie die Serverantwortzeit (TTFB): Verwenden Sie ein CDN, aktivieren Sie Caching und optimieren Sie Backend-Abfragen.
- Reduzieren Sie clientseitiges Rendering: Für SPAs ziehen Sie Server-Side Rendering (SSR) oder statische Generierung für die erste Ansicht in Betracht.
Beispiel: LCP-Bild vorladen:
<link rel="preload" as="image" href="/hero.avif" imagesrcset="/hero-480.avif 480w, /hero-800.avif 800w" imagesizes="(max-width: 600px) 480px, 800px">
Verbesserung von Interaction to Next Paint (INP)
INP misst die Verzögerung zwischen einer Nutzerinteraktion und dem nächsten Paint. Lange Aufgaben und schweres JavaScript sind häufige Ursachen.
- Teilen Sie lange Aufgaben auf: Verwenden Sie
setTimeout,requestIdleCallbackoder die Scheduler-API, um den Hauptthread freizugeben. - Optimieren Sie Event-Handler: Entprellen oder drosseln Sie teure Handler; vermeiden Sie Layout-Thrashing.
- Reduzieren Sie die JavaScript-Ausführungszeit: Code-Splitting, Tree-Shaking und verzögern Sie nicht-kritische Skripte.
- Verwenden Sie Web Worker für CPU-intensive Arbeit.
Beispiel: Den Hauptthread freigeben:
async function yieldToMain() {
if ('scheduler' in window && 'yield' in scheduler) {
return scheduler.yield();
}
return new Promise(resolve => setTimeout(resolve, 0));
}
async function handleClick() {
// ... do some work
await yieldToMain();
// ... continue
}
Verbesserung von Cumulative Layout Shift (CLS)
CLS tritt auf, wenn Elemente unerwartet verschieben. Verhindern Sie dies durch:
- Fügen Sie immer width- und height-Attribute zu Bildern und Videos hinzu oder verwenden Sie CSS
aspect-ratio. - Reservieren Sie Platz für dynamische Inhalte (Anzeigen, Embeds, Iframes) mit min-height oder Platzhaltern.
- Vermeiden Sie das Einfügen von Inhalten über bestehenden Inhalten, es sei denn, es wird durch eine Nutzerinteraktion ausgelöst.
- Verwenden Sie
font-display: optionaloder laden Sie Schriftarten vor, um FOIT/FOUT-Verschiebungen zu vermeiden.
Beispiel: Platz für eine Anzeige reservieren:
<div>
<!-- ad loads here -->
</div>
Tools und Workflow für kontinuierliche Verbesserung
Performance ist keine einmalige Sache. Integrieren Sie die Messung in Ihren Workflow:
- Legen Sie Budgets fest: Verwenden Sie Lighthouse CI, um Schwellenwerte in Pull Requests durchzusetzen.
- Überwachen Sie Felddaten: Richten Sie Dashboards mit CrUX oder Ihrem eigenen RUM ein.
- Priorisieren Sie Fixes: Konzentrieren Sie sich auf Metriken mit der größten Lücke zu den 'Gut'-Schwellenwerten.
- Testen Sie auf echten Geräten: Emulieren Sie Mittelklasse-Mobilgeräte, um Probleme zu erkennen.
Für eine schnelle Prüfung führen Sie Ihre Seite durch PageSpeed Insights; es kombiniert Labor- und Felddaten.
FAQ
Was sind die aktuellen Schwellenwerte für Core Web Vitals?
LCP: gut ≤2,5s, verbesserungswürdig ≤4s, schlecht >4s. INP: gut ≤200ms, verbesserungswürdig ≤500ms, schlecht >500ms. CLS: gut ≤0,1, verbesserungswürdig ≤0,25, schlecht >0,25.
Wie oft werden CrUX-Daten aktualisiert?
CrUX-Daten werden täglich aktualisiert, aber der Datensatz spiegelt ein rollierendes 28-Tage-Fenster wider. Die Search Console wird regelmäßig aktualisiert.
Kann ich Core Web Vitals verbessern, ohne mein Design zu ändern?
Ja. Viele Verbesserungen sind technischer Natur: Optimierung von Bildern, Verzögern von Skripten, Reservieren von Platz für dynamische Inhalte und Reduzierung der Arbeit am Hauptthread.
Bereit, die Performance Ihrer Website zu analysieren? Verwenden Sie unseren Nginx-Log-Analysator, um langsame Serverantworten zu identifizieren, die TTFB und LCP beeinflussen.