Lazy Loading (dt. „träges Laden“) verschiebt das Herunterladen von Inhalten auf den Zeitpunkt, an dem sie sichtbaroder interaktiv werden. Dadurch verkleinert sich das initiale Transfervolumen, was insbesondere auf mobilen Netzen die Largest Contentful Paint (LCP) und den Time to Interactive (TTI) beschleunigt.
Warum Lazy Loading?
- Performance-Boost: Weniger Daten im ersten Request verringern Render-Blocking und Serverlast.
- Bandbreiten-Ersparnis: Nutzer laden nur, was sie wirklich sehen; ideal bei großen Mediatheken.
- SEO-Vorteile: Bessere Core Web Vitals wirken sich positiv auf Rankings aus.
- Kosten-Reduktion: Geringerer CDN-/Hosting-Traffic, insbesondere bei High-Traffic-Sites.
Einsatzbereiche
Ressourcentyp | Typische Methode | Besonderheit |
---|---|---|
Bilder | loading="lazy" | Ab Chrome 75 nativ unterstützt |
Iframes/Videos | loading="lazy" + Poster | Spart Autoplay-Start, Preview nutzen |
JavaScript-Chunks | Dynamisches import() | In Single Page Applications (SPA) |
CSS/Fonts | media -Query, font-display | Nur bei Bedarf einbinden |
Datenanfragen | API-Calls auf Scroll | Infinite-Scroll, Chat-Apps |
Technische Umsetzung
Native Attribute
<img src="hero.webp" loading="lazy" alt="Produktfoto">
Moderne Browser ermitteln automatisch einen Threshold (meist ~300 px Vorlauf zum Viewport).
IntersectionObserver-API
const io = new IntersectionObserver(entries => { entries.forEach(e => { if (e.isIntersecting) { e.target.src = e.target.dataset.src; io.unobserve(e.target); } }); }); document.querySelectorAll('img[data-src]').forEach(img => io.observe(img));
Vorteil: Vollständige Kontrolle, Fallbacks für ältere Browser möglich.
- Build-Infrastruktur
- Webpack/Vite Code-Splitting:
import("./chart.js")
nur bei Bedarf laden. - Hybrid Rendering: First-Party HTML liefert Platzhalter, Client-Side JS lädt Inhalte nach.
- Webpack/Vite Code-Splitting:
Best Practices
- Platzhalter nutzen: Blur-Up, SVG-Color-Blocks oder CSS-Skelett verhindern Layout-Shift.
- Größenangaben setzen:
width
/height
oderaspect-ratio
vermeiden Cumulative Layout Shift (CLS). - Threshold feinjustieren: Bei Videos höherer Puffer (500-800 px), um Lade-Jitter zu vermeiden.
- Analytics anpassen: Scroll-Events oder Custom Metrics erfassen, damit ungesichtete Ressourcen nicht als „Bounce“ interpretiert werden.
- Server-Side Rendering (SSR): Platzhalter bereits im Markup ausliefern, damit Crawler Inhalte erkennen.
Vorteile & Grenzen
Vorteil | Grenze / Risiko |
---|---|
Schnellere First View | Zu aggressives Lazy-Loading kann „Klick-to-Click“ verzögern |
Geringerer Datenverbrauch | SEO-Crawler ohne JS könnten Inhalte übersehen |
Besseres Mobile-Erlebnis | Zusätzliche JS-Logik erhöht Gesamt-Bundle |
Skalierbarkeit bei Massenseiten | Komplexere Debugging- und Test-Szenarien |
Beispiel-Ergebnis
Ein Magazin mit 30 Bild-Kacheln pro Artikelseite ersetzte <img>
durch native Lazy-Loading und reduzierte das Initial Payload von 4,8 MB auf 1,1 MB. Die LCP sank von 3,2 s auf 1,4 s, die Absprungrate – besonders auf 3G-Netzen – um 19 %.
Fazit: Lazy Loading ist ein leichtgewichtiger, zugleich mächtiger Performance-Hebel. Wer die Technik konsequent für Bilder, Videos und Skripte einsetzt, dabei Platzhalter und korrekte Größenangaben berücksichtigt, schafft schnellere, ressourcenschonende und nutzerfreundliche Web-Erlebnisse.