Sofortiges Laden mit dem PRPL-Muster anwenden

PRPL ist ein Akronym, das ein Muster beschreibt, mit dem Webseiten schneller geladen und interaktiv werden:

  • Laden Sie die später gefundenen Ressourcen vorab.
  • Rendern Sie die ursprüngliche Route so schnell wie möglich.
  • Lade die verbleibenden Assets vorab in den Cache.
  • Lazy load andere Routes und nicht kritische Assets.

In diesem Leitfaden erfahren Sie, wie diese Techniken zusammenpassen, aber dennoch unabhängig voneinander verwendet werden können, um Leistungsergebnisse zu erzielen.

Seite mit Lighthouse prüfen

Führen Sie Lighthouse aus, um Verbesserungsmöglichkeiten im Einklang mit den PRPL-Methoden zu identifizieren:

  1. Drücken Sie Strg + Umschalttaste + J (oder Befehlstaste + Optionstaste + J auf einem Mac), um die Entwicklertools zu öffnen.
  2. Klicken Sie auf den Tab Lighthouse.
  3. Klicken Sie die Kästchen Leistung und Progressive Web-App an.
  4. Klicken Sie auf Analysen ausführen, um einen Bericht zu erstellen.

Weitere Informationen

Wichtige Ressourcen vorab laden

Lighthouse zeigt die folgende fehlgeschlagene Prüfung an, wenn eine bestimmte Ressource verspätet geparst und abgerufen wird:

Lighthouse: Prüfung des Vorabladens wichtiger Anfragen

Preload ist eine deklarative Abrufanfrage, die den Browser auffordert, eine Ressource anzufordern, die sonst vom Preload-Scanner des Browsers nicht gefunden werden kann, z. B. ein Bild, auf das in der background-image-Property verwiesen wird. Sie können spät erkannte Ressourcen vorab laden, indem Sie dem Head Ihres HTML-Dokuments ein <link>-Tag mit rel="preload" hinzufügen:

<link rel="preload" as="image" href="hero-image.jpg">

Wenn Sie eine <link rel="preload">-Anweisung hinzufügen, wird eine Anfrage für diese Ressource initiiert und im Cache gespeichert. Der Browser kann sie dann bei Bedarf abrufen.

Weitere Informationen zum Vorladen wichtiger Ressourcen finden Sie im Leitfaden Wichtige Assets vorab laden.

Erste Route so schnell wie möglich rendern

Lighthouse gibt eine Warnung aus, wenn es Ressourcen gibt, die den First Paint verzögern, also den Moment, in dem Ihre Website Pixel auf dem Bildschirm darstellt:

Lighthouse: Prüfung auf Ressourcen entfernen, die das Rendering blockieren

Um den First Paint zu verbessern, empfiehlt Lighthouse, kritisches JavaScript einzubetten und den Rest mit async zu verschieben. Außerdem sollte kritisches CSS, das im sichtbaren Bereich verwendet wird, inline eingefügt werden. Dadurch wird die Leistung verbessert, da keine zusätzlichen Zugriffe auf den Server erforderlich sind, um renderblockierende Assets abzurufen. Inline-Code ist jedoch aus Entwicklungssicht schwieriger zu pflegen und kann nicht separat vom Browser im Cache gespeichert werden.

Eine weitere Möglichkeit, den First Paint zu verbessern, besteht darin, das ursprüngliche HTML Ihrer Seite serverseitig zu rendern. So werden dem Nutzer Inhalte sofort angezeigt, während Scripts noch abgerufen, geparst und ausgeführt werden. Dies kann jedoch die Nutzlast der HTML-Datei erheblich erhöhen, was sich negativ auf die Time to Interactive auswirken kann, also die Zeit, die vergeht, bis Ihre Anwendung interaktiv wird und auf Nutzereingaben reagieren kann.

Es gibt keine einzige richtige Lösung, um die First Paint-Zeit in Ihrer Anwendung zu reduzieren. Sie sollten das Einbetten von Stilen und das serverseitige Rendering nur in Betracht ziehen, wenn die Vorteile die Nachteile für Ihre Anwendung überwiegen. In den folgenden Ressourcen finden Sie weitere Informationen zu diesen beiden Konzepten.

Anfragen/Antworten mit Service Worker

Assets vorab im Cache speichern

Da Dienstworker als Proxy fungieren, können sie bei wiederholten Besuchen Assets direkt aus dem Cache statt vom Server abrufen. So können Nutzer Ihre App nicht nur offline verwenden, sondern auch bei wiederholten Besuchen schneller auf Seiten zugreifen.

Verwenden Sie eine Bibliothek eines Drittanbieters, um das Generieren eines Dienstarbeiters zu vereinfachen, es sei denn, Sie haben komplexere Caching-Anforderungen als eine Bibliothek bieten kann. Workbox bietet beispielsweise eine Reihe von Tools, mit denen Sie einen Service Worker zum Caching von Assets erstellen und verwalten können. Weitere Informationen zu Dienstmitarbeitern und Offlinezuverlässigkeit finden Sie im Leitfaden zu Dienstmitarbeitern im Lernpfad zur Zuverlässigkeit.

Lazy Loading

Lighthouse zeigt eine fehlgeschlagene Prüfung an, wenn Sie zu viele Daten über das Netzwerk senden.

Lighthouse: Prüfung auf sehr große Netzwerknutzlasten

Dies schließt alle Asset-Typen ein. Große JavaScript-Nutzlasten sind jedoch besonders kostspielig, da der Browser zum Parsen und Kompilieren sie benötigt. In diesem Fall gibt Lighthouse gegebenenfalls auch eine Warnung aus.

Lighthouse: Prüfung der JavaScript-Startzeit

Wenn Sie eine kleinere JavaScript-Nutzlast senden möchten, die nur den Code enthält, der beim ersten Laden Ihrer Anwendung benötigt wird, teilen Sie das gesamte Bundle und laden Sie die einzelnen Teile bei Bedarf.

Nachdem Sie Ihr Bundle aufgeteilt haben, laden Sie die wichtigeren Chunks vorab (siehe Anleitung unter Wichtige Assets vorab laden). Durch das Vorabladen werden wichtigere Ressourcen früher vom Browser abgerufen und heruntergeladen.

Neben dem Aufteilen und Laden verschiedener JavaScript-Chunks auf Anfrage bietet Lighthouse auch eine Prüfung für das Lazy-Loading nicht kritischer Bilder.

Lighthouse: Prüfung von nicht sichtbaren Bildern verzögern

Wenn Sie viele Bilder auf Ihrer Webseite laden, sollten Sie beim Laden einer Seite alle Bilder, die sich „below the fold“ oder außerhalb des Darstellungsbereichs des Geräts befinden, aufschieben. Weitere Informationen finden Sie unter Lazysize für Lazy Loading von Bildern verwenden.

Nächste Schritte

Nachdem Sie nun einige der grundlegenden Konzepte hinter dem PRPL-Muster kennen, fahren Sie mit dem nächsten Leitfaden in diesem Abschnitt fort, um mehr zu erfahren. Nicht alle Techniken müssen zusammen angewendet werden. Jede dieser Maßnahmen führt zu deutlichen Leistungsverbesserungen.

  • Kritische Ressourcen vorab laden.
  • Rendern Sie die ursprüngliche Route so schnell wie möglich.
  • Lade die verbleibenden Assets vorab in den Cache.
  • Lazy Loading für andere Routen und nicht kritische Assets

Weitere Informationen zu PRPL-Mustern