Ein besseres Web erstellen – Teil 1: Ein schnelleres YouTube im Web

Eine Fallstudie zu den Änderungen, die das YouTube Web-Team vorgenommen hat, um die Leistung zu verbessern, die Erfolgsquoten für die Core Web Vitals zu steigern und wichtige Geschäftsmesswerte zu steigern.

Addy Osmani
Addy Osmani
Sriram Krishnan
Sriram Krishnan

Das Chrome-Team spricht oft von einem besseren Web, aber was bedeutet das? Websites sollten schnell und zugänglich sein und Gerätefunktionen genau dann nutzen, wenn die Nutzer sie am meisten brauchen. Dogfooding gehört zur Kultur von Google. Deshalb hat sich das Chrome-Team mit YouTube zusammengetan, um in der neuen Serie "Building a better web" in Zusammenarbeit mit YouTube Erfahrungen auszutauschen, die dabei gewonnen wurden. Im ersten Teil der Reihe geht es darum, wie YouTube eine schnellere Internetnutzung ermöglicht hat.

PageSpeed Insights zeigt die Daten des UX-Berichts für Chrome für YouTube im mobilen Web, die die Core Web Vitals bestehen.
Die Wiedergabeseite von YouTube für das mobile Web erfüllt die Core Web Vitals-Grenzwerte.

Unser schnelleres Web

Bei YouTube bezieht sich die Leistung darauf, wie schnell Videos und andere Inhalte wie Empfehlungen und Kommentare auf Webseiten geladen werden. Die Leistung wird außerdem dadurch gemessen, wie schnell YouTube auf Nutzerinteraktionen wie Suche, Steuerung des Players, „Mag ich“-Bewertungen und geteilte Inhalte reagiert.

Wachsende Schwellenländer wie Brasilien, Indien und Indonesien sind für das mobile Web auf YouTube wichtig. Da viele Nutzer in diesen Regionen langsamere Geräte und eine begrenzte Netzwerkbandbreite haben, ist es besonders wichtig, eine schnelle und nahtlose Erfahrung sicherzustellen.

Damit alle Nutzer inklusiv sind, haben wir uns entschieden, durch Lazy Loading und Codemodernisierung Leistungsmesswerte wie Core Web Vitals zu verbessern.

Core Web Vitals verbessern

Anhand des Berichts zur Nutzererfahrung in Chrome (Chrome User Experience, CrUX) ermittelte das YouTube-Team, wie echte Nutzer die Wiedergabe- und Suchergebnisseite auf Mobilgeräten in diesem Bereich erleben. Das Unternehmen stellte fest, dass seine Core Web Vitals-Messwerte viel Raum für Verbesserungen bieten, da der Messwert Largest Contentful Paint (LCP) in einigen Fällen 4–6 Sekunden beträgt. Das lag deutlich über dem Zielwert von 2,5 Sekunden.

Diagramme für FCP und LCP, in denen die Erfolgsquoten für die YouTube-Wiedergabeseite und der YouTube-Ursprung dargestellt werden

Um Verbesserungsmöglichkeiten zu finden, nutzte das Unternehmen Lighthouse, um die YouTube-Wiedergabeseiten zu prüfen. Dabei wurde ein niedriger Lighthouse-Wert (Lab) mit einem First Contentful Paint (FCP) von 3,5 Sekunden und einem LCP von 8,5 Sekunden festgestellt.

Lighthouse-Bericht für YouTube Mobile
Chrome legt als Goldstandard 1,8 s für FCP und 2,5 s für LCP fest. FCP und LCP lagen mit 3,5 bzw. 8,5 s deutlich in Gelb und Rot.

Um FCP und LCP zu optimieren, führte das YouTube-Team mehrere Tests durch, die zu zwei großen Entdeckungen führten.

  1. Die erste Entdeckung war, dass man die Leistung verbessern könnte, indem man den HTML-Code für den Google Video Player über das Skript verschiebt, das den Video Player interaktiv macht. Laut Labortests kann dies sowohl FCP als auch LCP von 4,4 Sekunden auf 1,1 Sekunden verbessern.

  2. Die zweite Entdeckung war, dass bei LCP nur <video>-Elementbilder und keine Frames aus dem Videostream selbst berücksichtigt werden. Bisher hat YouTube die schnellstmögliche Zeit bis zum Start der Wiedergabe des Videos optimiert. Um den LCP-Wert zu verbessern, begann das Team auch mit der Optimierung der Geschwindigkeit, mit der das Posterbild ausgeliefert werden kann. Das Team experimentierte mit verschiedenen Varianten von Posterbildern und wählte das aus, das bei Nutzungstests die beste Punktzahl erzielt hat. So konnten sowohl FCP als auch LCP deutlich verbessert werden, wobei der LCP-Wert im Feld von 4,6 auf 2,0 Sekunden verbessert wurde.

LCP-Test auf der Wiedergabeseite für mobiles Web mit Kontrolle, Test A (Miniaturansicht) und Test B (schwarze Miniaturansicht)
Im Lab konnten wir eine Verbesserung von FCP und LCP von 4,4 s auf 1,1 s beobachten, nachdem diese Änderung umgesetzt wurde. Test A: Die Verwendung des eigentlichen Video-Thumbnails funktioniert gut auf Seiten, auf denen das Video pausiert ist. Bei Videos mit automatischer Wiedergabe wie der Wiedergabeseite hat es in Nutzerstudien jedoch schlecht abgeschnitten. Außerdem sank die Anzahl der aktiven Nutzer. Experiment B: Die Verwendung eines einfarbigen schwarzen Posterbildes zeigte die besten Ergebnisse in Nutzerstudien. Nutzer fanden den Übergang vom durchgängigen Schwarz zum ersten Frame des Videos bei Autoplay-Videos weniger störend.
Das schwarze Thumbnail wurde im Juli 2021 für alle Nutzer des mobilen Webs in der Produktionsumgebung eingesetzt und zeigte deutliche Verbesserungen bei FCP und LCP, wie in der obigen RUM-Analyse zu sehen ist.
Die schwarze Miniaturansicht wurde im Juli 2021 in der Produktion für alle mobilen Webnutzer bereitgestellt und zeigt deutliche Verbesserungen bei FCP und LCP, wie in der obigen RUM-Analyse zu sehen ist.

Diese Optimierungen haben zwar den LCP-Wert verbessert, das Team war jedoch der Meinung, dass die aktuelle Definition des LCP-Messwerts aus Sicht des Nutzers nicht vollständig erfasst wurde, als der „Hauptinhalt“ der Seite geladen war – das ist das Ziel des LCP.

Deshalb haben Mitglieder des YouTube-Teams gemeinsam mit dem Chrome-Team nach Möglichkeiten gesucht, den LCP-Messwert zu verbessern. Nachdem die Teams die Machbarkeit und Auswirkungen einiger Optionen geprüft hatten, entstand ein Vorschlag, bei dem die Farbzeit des ersten Frames eines Videoelements als LCP-Kandidaten betrachtet werden sollte.

Sobald diese Änderung in Chrome umgesetzt wird, freut sich das YouTube-Team darauf, die Optimierung für LCP fortzusetzen. Und in der aktualisierten Version des Messwerts haben diese Optimierungen einen direkteneren Einfluss auf die tatsächliche Nutzererfahrung.

Modularisierung mit Lazy Loading

YouTube-Seiten enthielten viele Module, die mit Begeisterung geladen wurden. Um das Rendern von mehr als 50 Komponenten zu optimieren, erstellte das Team eine Komponente in die JS-Modulzuordnung, die dem Client mitteilt, welche Module geladen werden sollen. Wenn Sie die Komponenten als „verzögert“ kennzeichnen, werden die JS-Module später geladen, wodurch die anfängliche Ladezeit der Seite und die Menge an nicht verwendetem JavaScript reduziert werden, die an den Client gesendet wird.

Nach der Implementierung von Lazy Loading stellte das Team jedoch einen Wasserfalleffekt fest, bei dem Lazy Loading-Komponenten und ihre Abhängigkeiten zu suboptimalen Zeiten geladen werden.

Zur Lösung dieses Problems hat das Team die für eine Ansicht erforderliche Mindestanzahl an Komponenten ermittelt und in einer einzelnen Netzwerkanfrage zusammengefasst. Das Ergebnis: eine höhere Seitengeschwindigkeit, eine geringere JavaScript-Parsing-Zeit und letztendlich bessere anfängliche Renderingzeiten.

Komponentenübergreifende Statusverwaltung

Bei YouTube traten aufgrund der Steuerelemente des Videoplayers Leistungsprobleme auf, insbesondere auf älteren Geräten. Die Codeanalyse zeigte, dass der Player, mit dem Nutzer Funktionen wie die Wiedergabegeschwindigkeit und den Fortschritt steuern können, im Laufe der Zeit zu einer Überkomponentenverteilung kam.

Visualisierung des YouTube-Players und der Steuerelemente
Im YouTube-Videoplayer können Nutzer unter anderem die Wiedergabegeschwindigkeit steuern, den Fortschritt verfolgen und Abschnitte überspringen. Wenn ein Nutzer auf ein bestimmtes Steuerelement tippt, muss die Statusänderung an andere Steuerelemente weitergegeben werden. Wenn ein Nutzer z. B. auf die Fortschrittsanzeige tippt, muss dies für Steuerelemente wie Abspielkopf und Untertitel freigegeben werden.

Jedes Touch-Move-Ereignis für die Fortschrittsanzeige hat zwei zusätzliche Stil-Neuberechnungen ausgelöst.Während der Leistungstestläufe im Labor dauerte dies 21,17 ms. Da im Laufe der Zeit neue Steuerelemente hinzugefügt wurden, führte das Muster der dezentralisierten Kontrolle häufig zu zirkulären Abhängigkeiten und Speicherlecks, was sich negativ auf die Leistung der Wiedergabeseite auswirkte.

Ereignis von 21,17 ms auf der Leistungszeitachse.
Chrome-Entwicklertools mit einer 4-mal reduzierten CPU-Verlangsamung.

Um die Probleme aufgrund der dezentralisierten Steuerung zu beheben, aktualisierte das Team die Player-Benutzeroberfläche, um alle Updates zu synchronisieren. Dabei wurde der Player im Wesentlichen in eine Komponente der obersten Ebene refaktoriert, die Daten an seine untergeordneten Elemente übergibt. Dadurch wurde für jede Statusänderung nur ein einziger UI-Aktualisierungs- bzw. Rendering-Zyklus sichergestellt, wodurch verkettete Updates beseitigt wurden. Für das neue Ereignis „Touch-move“ in der Fortschrittsanzeige des Players werden während der JavaScript-Ausführung keine Stilneuberechnungen durchgeführt. Es sind nur noch 25% der Zeit des alten Players erforderlich.

Kürzere Zeit für Ereignisse, die in der Leistungszeitachse angezeigt werden.

Diese Codemodernisierung führte auch zu weiteren Leistungsverbesserungen wie verbesserten Ladezeiten auf alten Geräten, weniger abgebrochenen Wiedergaben und einer geringeren Anzahl nicht schwerwiegender Fehler.

Fazit

Dank der Investitionen von YouTube in die Leistung werden Wiedergabeseiten viel schneller geladen. 76% der URLs mobiler YouTube-Websites erfüllen jetzt die Grenzwerte für Core Web Vitals-Messwerte. Auf dem Computer wurde der Lab-LCP für die Wiedergabeseite von ungefähr 4,6 Sekunden auf 1,6 Sekunden reduziert. Die Interaktions- und Rendering-Leistung der Website, insbesondere im YouTube-Videoplayer, kann bis zu 75% weniger Zeit für die JavaScript-Ausführung aufwenden als zuvor.

Die Leistung von YouTube im letzten Jahr hat sich auch bei den Unternehmensmesswerten wie Wiedergabezeit und aktive Nutzer pro Tag verbessert. Angesichts des Erfolgs dieser Bemühungen planen wir, in Zukunft noch weitere Optimierungsmöglichkeiten zu finden.

Im zweiten Teil der Reihe, „Ein barrierefreies Web schaffen“ erfahren Sie, wie YouTube seine Website für Nutzer mit Screenreadern zugänglicher gemacht hat.

Ein besonderer Dank gilt Gilberto Cocchi, Lauren Usui, Benji Bear, Bo Aye, Bogdan Balas, Kenny Tran, Matthew Smith, Phil Harnish, Leena Sahoni, Jeremy Wagner, Philip Walton, Harleen Batra und den YouTube- und Chrome-Teams für ihren Beitrag zu dieser Arbeit.