Web-Performance
Web-Performance sind die objektiven Messungen und die wahrgenommene Benutzererfahrung von Ladezeit und Laufzeit. Web-Performance beschreibt, wie lange eine Website benötigt, um zu laden, interaktiv und reaktionsschnell zu werden, und wie flüssig der Inhalt während der Benutzerinteraktionen ist. Leistungsfragen beinhalten Aspekte wie: Ist das Scrollen flüssig? Sind Buttons reaktionsschnell? Laden Pop-ups schnell und animieren sie flüssig? Zu den objektiven Messungen gehören die Ladezeit, Bilder pro Sekunde und die Zeit, bis die Interaktivität erreicht wird, während die subjektive Erfahrung beschreibt, wie lange es sich anfühlt, bis der Inhalt geladen ist.
Je länger es dauert, bis eine Seite reagiert, desto mehr Benutzer werden die Seite verlassen. Es ist wichtig, die Lade- und Reaktionszeiten zu minimieren und zusätzliche Funktionen hinzuzufügen, um die Latenz zu verbergen, indem die Erfahrung so schnell wie möglich verfügbar und interaktiv gestaltet wird, während die längeren Teile der Erfahrung asynchron geladen werden.
Es gibt Tools, APIs und Best Practices, die uns helfen, die Web-Performance zu messen und zu verbessern. Wir behandeln diese auf den folgenden Seiten.
Leitfäden zur Web-Performance
Die Performance-Leitfäden sind Ressourcen, die beschreiben, wie Browser funktionieren, was die Leistung beeinflusst und wie man die Leistung in verschiedenen Aspekten Ihrer Anwendung misst, optimiert und überwacht.
- Grundlagen der Performance
-
Leistung steht für Effizienz. Im Kontext von Open Web Apps erklärt dieses Dokument im Allgemeinen, was Leistung ist, wie die Browserplattform hilft, sie zu verbessern und welche Tools und Prozesse Sie verwenden können, um sie zu testen und zu verbessern.
- Seiteninhalte laden: Wie Browser funktionieren
-
Benutzer wünschen sich Web-Erlebnisse mit Inhalten, die schnell geladen werden und mit denen sie flüssig interagieren können. Daher sollte ein Entwickler diese beiden Ziele anstreben. Um zu verstehen, wie man die Leistung und die wahrgenommene Leistung verbessert, hilft es zu verstehen, wie der Browser funktioniert.
- Latenz verstehen
-
Latenz ist die Zeit, die ein Datenpaket benötigt, um von der Quelle zum Ziel zu gelangen. Im Hinblick auf die Leistungsoptimierung ist es wichtig, die Ursachen der Latenz zu reduzieren und die Leistung der Seite zu testen, indem man hohe Latenz simuliert, um sie für Benutzer mit langsamen oder unzuverlässigen Verbindungen zu optimieren.
- Empfohlene Web-Performance-Timings: Wie lange ist zu lang?
-
Es gibt keine klaren Regeln dafür, was als langsames Tempo beim Laden von Seiten gilt, aber es gibt spezifische Richtlinien dafür, dass Inhalte in (1 Sekunde) laden, untätig (50 ms), animierend (16,7 ms) und auf Benutzereingaben reagieren (50 bis 200 ms).
- Verwendung von dns-prefetch
-
DNS-prefetchist ein Versuch, Domainnamen zu lösen, bevor Ressourcen angefordert werden. Dies könnte eine später geladene Datei oder ein Linkziel sein, das ein Benutzer zu folgen versucht. -
Navigationstiming sind Metriken, die die Navigationsereignisse eines Dokuments im Browser messen. Ressourcentimings sind detaillierte Netzwerkzeitmessungen bezüglich des Ladens von Anwendungsressourcen. Beide enthalten dieselben nur lesbaren Eigenschaften, aber Navigationstiming misst die Zeiten des Hauptdokuments, während das Ressourcentiming die Zeiten für alle Ressourcen oder Ressourcen misst, die durch dieses Hauptdokument und die angeforderten Ressourcen geladen wurden.
- Optimierung der Startleistung
-
Die Verbesserung Ihrer Startleistung ist oft eine der wertvollsten Leistungsoptimierungen, die vorgenommen werden kann. Eine gute Benutzererfahrung beinhaltet sicherzustellen, dass Ihre App schnell geladen wird. Dieser Artikel bietet Performance-Tipps und Vorschläge sowohl für das Schreiben neuer Anwendungen als auch für das Portieren von Anwendungen von anderen Plattformen ins Web.
- Kritischer Rendering-Pfad
-
Der kritische Rendering-Pfad ist die Abfolge von Schritten, die der Browser durchläuft, um das HTML, CSS und JavaScript in Pixel auf dem Bildschirm zu konvertieren. Die Optimierung des kritischen Rendering-Pfads verbessert die Renderleistung. Der kritische Rendering-Pfad umfasst das Document Object Model (DOM), CSS Object Model (CSSOM), Renderbaum und Layout.
- Lazy Loading
-
Lazy Loading ist eine Strategie, Ressourcen als nicht blockierend (nicht kritisch) zu identifizieren und diese nur bei Bedarf zu laden. Es ist eine Methode, um die Länge des kritischen Rendering-Pfads zu verkürzen, was zu kürzeren Seitenladezeiten führt.
- Spekulatives Laden
-
Spekulatives Laden bezieht sich auf die Praxis, Navigationsaktionen (wie DNS-Lookups, das Laden von Ressourcen oder das Rendern von Dokumenten) auszuführen, bevor die zugehörigen Seiten tatsächlich besucht werden, basierend auf Vorhersagen, welche Seiten der Benutzer am wahrscheinlichsten als nächstes besucht.
- Performance Budgets
-
Ein Performance-Budget ist eine Grenze, um Rückschritte zu verhindern. Es kann für eine Datei, einen Dateityp, alle Dateien, die auf einer Seite geladen werden, eine spezifische Metrik (z. B. Time to Interactive), eine benutzerdefinierte Metrik (z. B. Zeit bis zum Hero-Element) oder einen Schwellenwert über einen Zeitraum gelten.
- Performance-Monitoring: RUM vs. synthetisches Monitoring
-
Synthetisches Monitoring und Real User Monitoring (RUM) sind zwei Ansätze zur Überwachung und Bereitstellung von Einblicken in die Web-Performance. RUM und synthetisches Monitoring bieten unterschiedliche Blickwinkel auf die Leistung und haben Vorzüge, gute Anwendungsfälle und Nachteile. RUM eignet sich im Allgemeinen am besten, um langfristige Trends zu verstehen, während synthetisches Monitoring sehr gut für Regressionstests und die Milderung kurzfristiger Leistungsprobleme während der Entwicklung geeignet ist. In diesem Artikel definieren und vergleichen wir diese beiden Ansätze des Performance-Monitorings.
- CSS- und JavaScript-Animationsleistung
-
Animationen sind entscheidend für eine angenehme Benutzererfahrung in vielen Anwendungen. Es gibt viele Möglichkeiten, Web-Animationen zu implementieren, wie CSS
transitions/animationsoder JavaScript-basierte Animationen (unter Verwendung vonrequestAnimationFrame()). In diesem Artikel analysieren wir die Leistungsunterschiede zwischen CSS-basierten und JavaScript-basierten Animationen. - Animationsleistung und Bildfrequenz
-
Animation im Web kann über
SVG,JavaScript, einschließlich<canvas>undWebGL, CSSanimation,<video>, animierte GIFs und sogar animierte PNGs und andere Bildtypen erfolgen. Die Leistungskosten zur Animation einer CSS-Eigenschaft können von einer Eigenschaft zur anderen variieren, und die Animation aufwendiger CSS-Eigenschaften kann zu Ruckeln führen, da der Browser Probleme hat, eine flüssige Bildrate zu erreichen.
Tutorials für Anfänger
Der MDN Web-Performance-Lernbereich enthält moderne, aktuelle Tutorials zu Performance-Grundlagen. Beginnen Sie hier, wenn Sie neu im Thema Performance sind:
- Das "Warum" der Web-Performance
-
Dieser Artikel diskutiert, warum Web-Performance wichtig für Zugänglichkeit, Benutzererfahrung und Ihre Geschäftsziele ist.
- Was ist Web-Performance?
-
Sie wissen, dass Web-Performance wichtig ist, aber welche Faktoren beeinflussen die Web-Performance und wie wird sie gemessen? Dieser Artikel führt die Komponenten der Performance ein, vom Laden und Rendern von Webseiten, einschließlich der Art und Weise, wie Ihre Inhalte in den Browser Ihrer Nutzer gelangen, um angezeigt zu werden, bis hin zu den Gruppen von Menschen, die wir bei der Betrachtung der Performance berücksichtigen müssen.
- Wie nehmen Benutzer die Performance wahr?
-
Wichtiger als wie schnell Ihre Website in Millisekunden ist, ist, wie schnell Ihre Benutzer Ihre Seite wahrnehmen. Diese Wahrnehmungen werden durch die tatsächliche Seitenladezeit, Untätigkeit, Reaktionsfähigkeit auf Benutzereingaben und die Flüssigkeit von Scrolling und anderen Animationen beeinflusst. In diesem Artikel diskutieren wir die verschiedenen Lade-Metriken, Animations- und Reaktionsfähigkeitsmetriken sowie Best Practices, um die Benutzerwahrnehmung zu verbessern, wenn nicht sogar die tatsächlichen Zeiten.
- Leistungsmessung
-
Nachdem Sie nun einige Leistungsmetriken verstanden haben, gehen wir tiefer auf Leistungswerkzeuge, Metriken und APIs ein und wie wir die Leistung zum Teil des Web-Entwicklungs-Workflows machen können.
- Multimedia: Bilder
-
Der niedrig hängende Früchte im Bereich Web-Performance ist oft die Medienoptimierung. Es ist möglich, verschiedene Mediendateien basierend auf der Kapazität, Größe und Pixeldichte jedes Benutzeragenten bereitzustellen. In diesem Artikel diskutieren wir den Einfluss von Bildern auf die Performance und die Methoden, um die Anzahl der pro Bild gesendeten Bytes zu reduzieren.
- Multimedia: Video
-
Der niedrig hängende Früchte im Bereich Web-Performance ist oft die Medienoptimierung. In diesem Artikel diskutieren wir den Einfluss von Videoinhalten auf die Performance und geben Tipps, wie das Entfernen von Audiotracks aus Hintergrundvideos die Performance verbessern kann.
- JavaScript-Performance-Optimierung
-
JavaScript kann, richtig eingesetzt, interaktive und immersive Web-Erfahrungen ermöglichen – oder es kann die Download-Zeit, die Renderzeit, die In-App-Leistung, die Akkulaufzeit und die Benutzererfahrung erheblich beeinträchtigen. Dieser Artikel umreißt einige JavaScript-Best-Practices, die in Betracht gezogen werden sollten, um sicherzustellen, dass auch komplexe Inhalte so performant wie möglich sind.
- HTML-Performance-Optimierung
-
Einige Attribute und die Quellreihenfolge Ihres Markups können die Performance Ihrer Website beeinflussen. Indem die Anzahl der DOM-Knoten minimiert wird und sichergestellt wird, dass die beste Reihenfolge und Attribute verwendet werden, um Inhalte wie Stile, Skripte, Medien und Drittanbieter-Skripte einzubinden, können Sie die Benutzererfahrung drastisch verbessern. Dieser Artikel betrachtet im Detail, wie HTML verwendet werden kann, um maximale Leistung sicherzustellen.
- CSS-Performance-Optimierung
-
CSS mag ein weniger wichtiger Optimierungsfokus für verbesserte Leistung sein, aber es gibt einige CSS-Eigenschaften, die die Leistung mehr als andere beeinflussen. In diesem Artikel betrachten wir einige CSS-Eigenschaften, die die Leistung beeinflussen, und vorgeschlagene Methoden zur Handhabung von Stilen, um sicherzustellen, dass die Leistung nicht negativ beeinflusst wird.
- Der geschäftliche Nutzen der Web-Performance
-
Es gibt viele Dinge, die ein Entwickler tun kann, um die Leistung zu verbessern, aber wie schnell ist schnell genug? Wie können Sie Entscheidungsträger von der Wichtigkeit dieser Bemühungen überzeugen? Einmal optimiert, wie können Sie sicherstellen, dass keine Aufblähung zurückkehrt? In diesem Artikel betrachten wir das Überzeugen des Managements, die Entwicklung einer Leistungskultur und eines Leistungsbudgets und führen Wege ein, um sicherzustellen, dass Rückschritte nicht in Ihren Code-Bestand schleichen.
- Web-Performance-Best-Practices und -Tipps
-
Dieser Artikel behandelt mehrere Themen auf einfachem Niveau und bietet Links zu tiefergehenden Analysen, um die Leistung für jedes Thema zu verbessern. Zusätzlich zu Front-End-Themen wie HTML, CSS, JavaScript und Mediendateien werden auch APIs, Entwicklertools, Best Practices und schlechte Praktiken im Hinblick auf Web-Performance behandelt.
Performance-APIs
Die Performance API ist eine Gruppe von Standards, die zur Messung der Leistung von Webanwendungen verwendet werden. Die folgenden Seiten bieten Übersichten über die Performance-APIs inklusive Informationen zur Verwendung:
- Hochpräzise Zeitmessung
-
Die Performance API ermöglicht hochpräzise Messungen, die auf Sub-Millisekunden-Auflösung und einer stabilen, monotonen Uhr basieren, die nicht durch Systemuhrabweichungen oder -anpassungen beeinflusst wird. Die hochauflösenden Timer werden für präzises Benchmarking benötigt anstatt der weniger präzisen und nicht-monotonen
Date-Zeitstempel. - Zeitmessung für lange Animationsrahmen
-
Lange Animationsrahmen (LoAFs) können die Benutzererfahrung einer Website beeinträchtigen. Sie können zu langsamen Benutzeroberflächen- (UI-) Aktualisierungen führen und scheinbar unresponsive Steuerelemente sowie ruckelnde (oder nicht flüssige) Animationseffekte und Scrollen verursachen, was zu Benutzerfrustration führen kann. Die Long Animation Frames API ermöglicht es Entwicklern, Informationen über lange Animationsrahmen zu erhalten und ihre Ursachen besser zu verstehen. Dieser Artikel zeigt, wie man die Long Animation Frames API verwendet.
- Überwachen der bfcache-Blockierungsgründe
-
Die
PerformanceNavigationTiming.notRestoredReasons-Eigenschaft liefert Informationen darüber, warum das aktuelle Dokument daran gehindert wurde, den bfcache bei der Navigation zu nutzen. Entwickler können diese Informationen verwenden, um Seiten zu identifizieren, die aktualisiert werden müssen, um bfcache-kompatibel zu sein und so die Leistung der Seite zu verbessern. -
Navigationstiming bietet Metriken, die mit dem Navigieren von einer Seite zur anderen über die PerformanceNavigationTiming API verbunden sind. Zum Beispiel können Sie feststellen, wie lange es dauert, ein Dokument zu laden oder zu entladen oder die Zeit protokollieren, die vergangen ist, bis die DOM-Konstruktion abgeschlossen ist und eine Interaktion mit dem DOM möglich ist.
- Performance-Daten
-
Die Performance API liefert keine Leistungsdatenanalysen oder Visualisierungen. Sie ist jedoch gut in Entwicklertools integriert und ihre Daten werden häufig an Analyseendpunkte und Bibliotheken gesendet, um Leistungsmetriken aufzuzeichnen, die Ihnen helfen, die Daten zu bewerten, um Leistungsengpässe zu identifizieren, die Ihre Benutzer betreffen. Diese Seite gibt einen Überblick darüber, welche Arten von Performance-API-Daten existieren, wie sie gesammelt werden und wie sie abgerufen werden können.
- Resource Timing API
-
Resource Timing ermöglicht das Abrufen und Analysieren detaillierter Netzwerkzeitdaten für das Laden der Ressourcen einer Anwendung. Eine Anwendung kann die Zeitmetriken verwenden, um z. B. die Dauer zu bestimmen, die erforderlich ist, um eine bestimmte Ressource zu laden (wie ein Bild oder ein Skript), entweder implizit als Teil des Seitenladens oder explizit aus JavaScript, beispielsweise unter Verwendung der
fetch()API. - Server-Timing
-
Server-Timing ermöglicht es Servern, Metriken über den Anforderungs-Antwort-Zyklus an den Benutzeragenten zu kommunizieren. Sie können diese Informationen sammeln und serverseitige Metriken auf die gleiche Weise verarbeiten wie alle anderen mit der Performance API verarbeiteten Metriken.
- User Timing API
-
Erstellen Sie anwendungsspezifische Zeitstempel mit den "mark"- und "measure"-Eintragstypen der User Timing API unter Verwendung von hochpräzisen Zeitstempeln, die Teil der Leistungstimeline des Browsers sind.
Verwandte APIs
Die folgenden APIs sind ebenfalls nützlich, um die Seitenleistung zu messen und zu beeinflussen:
- Page Visibility API
-
Stellt Ereignisse bereit, die Sie beobachten können, um zu wissen, wann ein Dokument sichtbar oder ausgeblendet wird, sowie Funktionen, um den aktuellen Sichtbarkeitsstatus der Seite zu betrachten.
- Background Tasks API
-
Die Kooperative Planung von Hintergrundaufgaben API (auch bekannt als Background Tasks API oder
requestIdleCallback()API) bietet die Möglichkeit, Aufgaben in eine Warteschlange einzureihen, die automatisch vom Benutzeragenten ausgeführt werden, wenn er feststellt, dass es freie Zeit dafür gibt. - Beacon API
-
Die Beacon-Schnittstelle plant eine asynchrone und nicht blockierende Anfrage an einen Webserver.
- Intersection Observer API
-
Die Intersection Observer API bietet einen Weg, um asynchron Änderungen bei der Schnittmenge eines Zielelements mit einem Vorfahrenelement oder mit einem Dokument auf hoher Ebene Viewport zu beobachten. Dies ermöglicht Anwendungsfälle wie Zeitmessung der Element-Sichtbarkeit, um asynchron benachrichtigt zu werden, wenn interessante Elemente sichtbar werden.
- Media Capabilities API
-
Bietet Zugriff auf die Dekodier- und Kodierfähigkeiten eines Client-Geräts, zum Beispiel, ob Medien unterstützt werden und ob die Wiedergabe flüssig und energieeffizient sein sollte, mit Echtzeit-Feedback über die Wiedergabe, um besseres adaptives Streaming zu ermöglichen, und Zugriff auf Informationen zu Anzeigeeigenschaften.
- Network Information API
-
Informationen über die Verbindung des Systems in Bezug auf den allgemeinen Verbindungstyp (z. B. 'WiFi', 'Mobil', usw.). Dies kann verwendet werden, um hochauflösende Inhalte oder niedrigauflösende Inhalte basierend auf der Verbindung des Benutzers auszuwählen.
- Battery Status API
-
Die Battery API bietet Informationen über den Ladezustand des Systems und lässt Sie durch Ereignisse benachrichtigen, die gesendet werden, wenn sich der Batteriestatus oder Ladezustand ändert. Dies kann verwendet werden, um den Ressourcenverbrauch Ihrer App anzupassen, um den Batterieabfluss zu reduzieren, wenn der Akku schwach ist, oder Änderungen zu speichern, bevor der Akku leer ist, um Datenverlust zu verhindern.
-
Die
deviceMemory-Eigenschaft derNavigator-Schnittstelle gibt die ungefähre Menge des Gerätespeichers in Gigabyte aus. - FetchEvent.preloadResponse
-
Die
preloadResponse-Eigenschaft derFetchEvent-Schnittstelle gibt einPromisezurück, das bei der Navigation preloadResponseaufgelöst wird, wenn das Navigation Preload Manager ausgelöst wurde, oderundefinedandernfalls.
Profiling und Werkzeuge
- Firefox Profiler Performance Features
-
Diese Website bietet Informationen darüber, wie man die Leistungsmerkmale in Ihren Entwicklertools nutzt und versteht, einschließlich Call Tree, Flame Graph, Stack Chart, Marker Chart und Network Chart.
- Profiling mit dem eingebauten Profiler
-
Erfahren Sie, wie Sie die Leistung Ihrer App mit dem integrierten Profiler von Firefox analysieren.
Referenzen
HTML
<picture>Element<video>Element<source>Element<img>Attribute (wiesrcset) für responsive Bilderrel="preload"Attribut zum Vorladen von Inhalten über HTML
CSS
JavaScript
HTTP
- Content-Encoding
- Ressourcenhinweise über dns-prefetch, preconnect, prefetch und prerender
- HTTP/2
- Client Hints
Siehe auch
- Responsive Images HTML-Leitfaden
- Web Workers API, einschließlich Using Service Workers und Using Web Workers
- Offline- und Hintergrundbetrieb
- Caching
- Client Hints
- Glossarbegriffe:
- Beacon
- Brotli-Kompression
- Content Delivery Networks (CDN)
- Kumulative Layoutverschiebungen (CLS)
- Code-Splitting
- CSSOM
- Domain-Sharding
- Effektiver Verbindungstyp
- Erster Contentful Paint (FCP)
- Erste CPU-Inaktivität
- Erster Paint
- gzip-Kompression
- HTTP/2
- HTTP
- Interaktion bis zum nächsten Paint (INP)
- Ruckeln
- Größtes Contentful Paint (LCP)
- Latenz
- Lazy Load
- Lange Aufgabe
- Verlustfreie Kompression
- Verlustbehaftete Kompression
- Hauptthread
- Minifizierung
- Netzwerkdrosselung
- Paket
- Seitenladezeit
- Seitenvorhersage
- Parsen
- Wahrgenommene Leistung
- Vorladen
- Prerendern
- QUIC
- RAIL
- Real User Monitoring (RUM)
- Ressourcen-Timing
- Round Trip Time (RTT)
- Server-Timing
- Spekulatives Parsen
- Geschwindigkeitsindex (und Wahrnehmungs-Geschwindigkeitsindex)
- SSL
- Synthetisches Monitoring
- TCP-Handshake
- Langsamer Start von TCP
- Transmission Control Protocol (TCP)
- Time to First Byte (TTFB)
- Time to Interactive (TTI)
- TLS
- Tree Shaking
- Web-Performance
- Performance in Firefox Developer Tools