Zum Inhalt springen
Frontend-Optimierung

Zu große Bilder trotz srcset: sizes richtig setzen

Trotz srcset lädt der Browser die große Bilddatei? Meist fehlt sizes oder passt nicht mehr zum Raster. Wie der Browser wählt, wie Sie sizes ableiten und prüfen.

18 Min. Lesezeit Bilder-OptimierungsrcsetLazy LoadingLCP

Kurz und einfach erklärt

Ein Bild liegt oft in mehreren Größen bereit. Der Browser soll die passende Größe laden. Dafür braucht er eine Angabe, wie breit das Bild auf der Seite wird.

Fehlt diese Angabe, rechnet der Browser mit der ganzen Breite des Fensters. Dann lädt er oft eine viel zu große Datei. Die Seite wird dadurch langsamer.

Die Angabe muss zum Aufbau der Seite passen. Ändert sich der Aufbau, muss man auch die Angabe neu prüfen.

Man kann nachsehen, welche Datei der Browser wirklich lädt. Das geht mit den Werkzeugen im Browser.

Wir prüfen die Bilder auf Ihren Seiten. Dann passen wir die Angaben an. So lädt der Browser in der Regel keine zu großen Bilder mehr.

Die Produktbilder liegen in mehreren Größen bereit, das srcset ist gepflegt, und trotzdem lädt die schmale Kachel im Listing eine Datei, die für die volle Bildschirmbreite gedacht ist. Die Analyse meldet dann zu große Bilder, früher unter der Überschrift „Bilder richtig dimensionieren“. Die Ursache steckt selten im srcset selbst, sondern im Attribut daneben: sizes fehlt oder beschreibt ein Raster, das es nach der letzten Theme-Änderung so nicht mehr gibt. Dieser Beitrag zeigt, wie der Browser aus sizes und Pixeldichte die Datei wählt, wie Sie sizes je Vorlage aus dem Raster ableiten und wie Sie in den Entwicklerwerkzeugen nachweisen, welche Datei tatsächlich geladen wurde.

Das Wichtigste in Kürze

  • Fehlt sizes, rechnet der Browser mit der vollen Fensterbreite von 100vw (HTML Living Standard). Auf dem Desktop war 2024 jedes fünfte sizes-Attribut so ungenau, dass der Browser eine unpassende Datei wählte (Web Almanac 2024).
  • Der Browser nimmt die erste zutreffende Bedingung in sizes (MDN Web Docs), teilt die w-Angaben aus srcset durch diese Breite und gleicht das Ergebnis mit der Pixeldichte ab. Ein Fehler in sizes wird so mit der Pixeldichte multipliziert.
  • sizes wird je Vorlage aus dem Raster abgeleitet: Spaltenzahl, Abstand, Rand und maximale Containerbreite je Umbruchpunkt. Nach einer Theme-Änderung gehören feste Werte auf den Prüfstand, in Shopware etwa die der Listing-Kachel (Shopware-Quellcode).
  • Maßgeblich ist die geladene Datei: currentSrc und echte Dateibreite gegen angezeigte Breite mal Pixeldichte, dazu die Netzwerkanalyse ohne Cache. Lighthouse prüft Bildgrößen seit Version 13 im Insight Improve image delivery (Chrome for Developers).
  • sizes="auto" gilt nur für Bilder mit loading="lazy" und wird ab Chrome 126, Firefox 150 und Safari 27 mit Einschränkungen ausgewertet (MDN browser-compat-data). Das LCP-Bild braucht deshalb weiter eine ausdrückliche sizes-Liste.
  • Vor der Black Week jede neue Aktionskachel bei mobiler und bei Desktop-Breite messen: Die erste sichtbare Kachel lädt eager mit ausdrücklichem sizes, Kacheln weiter unten lazy mit sizes="auto" und Rückfallliste.

Warum trotz srcset die große Datei lädt

Der Browser fordert Bilder sehr früh an, oft bevor ein Stylesheet geladen oder angewendet ist. Zu diesem Zeitpunkt kennt er nur das Markup, die Größe des Fensters und die Pixeldichte des Bildschirms, aber nicht das Layout der Seite (web.dev). Wie breit eine Kachel später wird, steht im CSS, und das liegt noch nicht vor. Genau dafür gibt es sizes: Das Attribut beschreibt, wie breit das Bild im Layout erscheinen wird, damit der Browser schon beim Lesen des Markups die passende Datei aus srcset wählen kann.

Fehlt sizes, nimmt der Browser die volle Fensterbreite an: Der Auswertungsschritt im HTML-Standard endet mit dem Rückgabewert 100vw (HTML Living Standard). Für eine Listing-Kachel, die ein Viertel der Breite belegt, ist das ein Vielfaches des tatsächlichen Platzes. Ein Rechenbeispiel: Die Kachel ist 300 Pixel breit, das Fenster 1440 Pixel, der Bildschirm hat die Pixeldichte 2. Mit passendem sizes braucht der Browser eine Datei mit rund 600 Pixeln Breite. Ohne sizes sucht er eine Datei für 2880 Pixel und nimmt die größte, die das srcset anbietet. Der HTML-Standard verlangt ausdrücklich ein sizes, sobald srcset Breitenangaben enthält.

Wie verbreitet das Problem ist, zeigt der Web Almanac des HTTP Archive. 42 Prozent der mobilen Seiten nutzten 2024 das Attribut srcset (Web Almanac 2024). Bei 62 Prozent der srcset-Angaben auf Mobilseiten und 64 Prozent auf dem Desktop sind die Dateien über ihre Breite beschrieben, also mit w-Angaben (Web Almanac 2024). Genau diese Angaben sind auf sizes angewiesen. Auf dem Desktop war jedes fünfte sizes-Attribut so ungenau, dass der Browser eine unpassende Datei aus srcset wählte; auf Mobilgeräten traf das auf 14 Prozent zu (Web Almanac 2024).

Auf dem Desktop ist der Fehler teurer, weil der Abstand zwischen der vollen Fensterbreite und der echten Bildbreite dort größer ist. Der Almanac schätzt, dass ein Viertel der Desktopseiten mit w-Angaben 180 KB oder mehr an Bilddaten zu viel lädt, und die ungünstigsten 10 Prozent dieser Seiten knapp ein Megabyte (Web Almanac 2024). Gemessen wurde mit einem Desktop-Crawler von 1376 Pixeln Breite und Pixeldichte 1 sowie einem mobilen Crawler von 360 Pixeln Breite mit Pixeldichte 3 (Web Almanac 2024). Echte Geräte weichen davon ab, die Größenordnung zeigt aber, wo sich die Prüfung lohnt.

That is to say, a better, smaller resource is there for the picking in the srcset, but because the sizes attribute is so erroneous, the browser doesn’t pick it.

HTTP Archive, Web Almanac 2024, Kapitel Media

Wie der Browser aus sizes und Pixeldichte wählt

Die Auswahl läuft in drei Schritten. Zuerst geht der Browser die Liste in sizes von links nach rechts durch und nimmt die erste Medienbedingung, die zutrifft; der Eintrag ohne Bedingung am Ende gilt, wenn keine passt (MDN Web Docs). Diese Breite ist der Platz, den das Bild im Layout bekommt. Danach teilt er jede w-Angabe aus srcset durch diese Breite. Aus 800w bei einem Platz von 400 Pixeln wird so eine effektive Dichte von 2. Zuletzt vergleicht er diese Dichten mit der Pixeldichte des Geräts und lädt die Datei, die am ehesten passt.

Weil die erste zutreffende Bedingung gewinnt, entscheidet die Reihenfolge. MDN formuliert es deutlich: Der Browser ignoriert alles nach der ersten passenden Bedingung (MDN Web Docs). Wer (min-width: 576px) 50vw vor (min-width: 1200px) 300px schreibt, bekommt auf dem Desktop die halbe Fensterbreite, weil die erste Bedingung dort ebenfalls zutrifft. Bei min-width gehört die breiteste Bedingung nach vorn, bei max-width die schmalste.

Die folgende Tabelle rechnet das für eine Listing-Kachel mit einem srcset aus vier Stufen durch: 400, 600, 1000 und 1600 Pixel. Es ist ein Rechenbeispiel; der Browser darf im Einzelfall anders entscheiden, wie der Abschnitt danach zeigt.

SituationBreite laut sizesPixeldichtebenötigte Breitegewählte Datei
Desktop, sizes fehlt1440 px (100vw)11440 px1600w
Desktop, sizes fehlt1440 px (100vw)22880 px1600w, größte Stufe
Desktop, sizes passt300 px1300 px400w
Desktop, sizes passt300 px2600 px600w
Smartphone, sizes fehlt390 px (100vw)31170 px1600w
Smartphone, zwei Spalten, sizes passt180 px3540 px600w

Die Pixeldichte ist der Teil, den viele unterschätzen. Eine Datei mit doppelter Breite hat viermal so viele Pixel, und die Dateigröße wächst mit. Im Beispiel von MDN wiegt dasselbe Motiv mit 640 Pixeln Breite 93 KB, mit 320 Pixeln 39 KB (MDN Web Docs). Deshalb macht sizes auf hochauflösenden Smartphones so viel aus: Jeder Fehler in der angegebenen Breite wird mit der Pixeldichte multipliziert, und aus einem kleinen Irrtum im Markup wird eine deutlich größere Datei.

Der Standard lässt dem Browser bei der Auswahl Spielraum. Er darf neben der Pixeldichte auch Zoomstufe und Netzbedingungen berücksichtigen (HTML Living Standard), und der eigentliche Auswahlschritt ist ausdrücklich der Implementierung überlassen (HTML Living Standard). Praktisch heißt das: Liegt eine größere Fassung desselben Bildes schon im Speicher, kann der Browser sie wiederverwenden. In einem Test mit Chrome lud ein lazy geladenes Bild mit sizes="auto" in den meisten Durchläufen die große Datei, weil dasselbe Motiv weiter oben ohne sizes stand und die große Fassung bereits geladen hatte; allein auf der Seite lud dasselbe Bild die passende kleine Datei. Ein fehlendes sizes an einer Stelle kann also eine zweite Stelle mitziehen.

Häufige Ursachen: sizes passt nicht mehr zum Raster

Ein sizes-Attribut ist eine Beschreibung des Layouts, die im Markup steht und nicht im CSS. Ändert sich das Layout, ändert sich die Beschreibung nicht von selbst mit. Das mittlere sizes-Attribut war 2024 auf Mobilgeräten 16 Prozent und auf dem Desktop 43 Prozent zu groß, und die Werte hatten sich gegenüber der vorigen Auswertung verschlechtert (Web Almanac 2024). In Shops begegnen uns dafür vor allem sechs Ursachen.

  • sizes fehlt ganz. Das passiert häufig in eigenen Templates, Plugins und Seitenbausteinen, die ein srcset erzeugen, aber kein sizes mitgeben. In Shopware erzeugt die Vorschaubild-Funktion kein sizes, wenn der Aufruf weder Größen noch eine Spaltenzahl mitbringt (Shopware-Quellcode). Der Browser rechnet dann mit 100vw.
  • Raster-Drift nach einer Theme-Änderung. Feste Pixelwerte stimmen nur für das Raster, für das sie geschrieben wurden. Shopware hinterlegt für die Produktkachel im Listing feste Werte von 500 Pixeln auf schmalen Bildschirmen bis 280 Pixeln auf breiten (Shopware-Quellcode). Wer im Theme die Spaltenzahl ändert, die Filterleiste entfernt oder die Kachel breiter zieht, muss diese Werte mitziehen.
  • Bild-Elemente mit der Originalbreite. Im Anzeigemodus „Standard“ übergibt das Bild-Element der Erlebniswelten die Breite der hochgeladenen Originaldatei als sizes, während das Stylesheet die Darstellung auf die Spaltenbreite begrenzt (Shopware-Quellcode). Ist das Original breiter als die Spalte, wählt der Browser eine größere Stufe als nötig.
  • Container-Grenzen fehlen. sizes wird oft nur in vw formuliert. Auf breiten Monitoren wächst der Wert dann weiter, obwohl der Inhaltsbereich bei einer maximalen Breite stehen bleibt. Ab dieser Breite gehört ein fester Pixelwert in die Liste oder eine Begrenzung mit min(), denn mathematische Funktionen sind in sizes erlaubt (HTML Living Standard).
  • Slider und horizontale Leisten. In horizontal scrollenden Bereichen taugt die Fensterbreite nicht als Obergrenze für die Bildbreite (web.dev). Cross-Selling-Leisten und Aktionsslider brauchen deshalb eine eigene Angabe je Umbruchpunkt.
  • Falsche Reihenfolge der Bedingungen. Mit min-width muss die breiteste Bedingung zuerst stehen. Steht sie hinten, wird sie nicht erreicht, und auf großen Bildschirmen gilt der Wert für mittlere.

Für die Produktgalerie gelten eigene Regeln; Bildstufen und sizes je Galerieelement beschreibt der Beitrag zur Produktgalerie. Hier geht es um die Stellen, an denen viele gleichartige Bilder nebeneinanderstehen: Listing, Erlebniswelten, Aktionskacheln und Magazin. Die Pflege dieser Angaben gehört zur Frontend-Optimierung und nicht zur Bildbearbeitung, denn die Bilddateien selbst sind meist in Ordnung.

sizes je Vorlage aus dem Raster ableiten

Ein passendes sizes entsteht nicht durch Ausprobieren, sondern aus dem Raster der Vorlage. Je Umbruchpunkt braucht es vier Angaben: die Spaltenzahl, den Abstand zwischen den Spalten, den seitlichen Rand und die maximale Breite des Inhaltsbereichs. Daraus ergibt sich die Breite einer Spalte, und genau diese Breite steht als Ausdruck in sizes. Wer seine Seiten ohnehin nach Vorlagen gliedert, wie im Beitrag Vorlage statt Startseite beschrieben, hat die Liste der Bildstellen schon fast beisammen. Für eine Listing-Kachel sieht das Ergebnis so aus:

listing-tile.html
<!-- Listing-Kachel: 2 Spalten unter 768 px (Rand 16 px, Abstand 12 px),
     3 Spalten ab 768 px und 4 ab 1200 px (Rand 24 px, Abstand 24 px),
     Inhaltsbereich höchstens 1320 px breit -->
<img
  src="/media/jacke-600.avif"
  srcset="/media/jacke-400.avif 400w,
          /media/jacke-600.avif 600w,
          /media/jacke-1000.avif 1000w"
  sizes="(min-width: 1368px) 312px,
         (min-width: 1200px) calc((100vw - 120px) / 4),
         (min-width: 768px) calc((100vw - 96px) / 3),
         calc((100vw - 44px) / 2)"
  width="600" height="600" loading="lazy" decoding="async"
  alt="Wanderjacke in Blau">

Zwei Feinheiten machen den Unterschied. Erstens darf sizes etwas größer sein als die echte Breite, aber nicht deutlich kleiner: Ein zu kleiner Wert führt zu einer Datei, die der Browser hochskaliert, und das Bild wirkt unscharf. Der Almanac nennt sizes ausdrücklich einen Hinweis, bei dem eine kleine Ungenauigkeit in Ordnung ist (Web Almanac 2024). Zweitens folgt ein Ausdruck mit calc() dem Fenster stufenlos, während ein fester Pixelwert zwischen zwei Umbruchpunkten zwangsläufig zu groß oder zu klein ist. Feste Werte eignen sich deshalb vor allem oberhalb der maximalen Containerbreite.

Vorlage und BildstelleRasterAnsatz für sizesWorauf achten
Startseite, Kopfbild über die volle Breiteeine Spalte, randlos100vwLCP-Bild: eager laden, sizes ausdrücklich setzen
Listing, Produktkachelzwei bis fünf Spalten je Umbruchpunktcalc() je Umbruchpunkt, fester Wert ab Containerbreitenach jeder Änderung an Spaltenzahl oder Filterleiste prüfen
Erlebniswelt mit zwei oder drei BildspaltenSpalten im InhaltsbereichSpaltenbreite aus Containerbreite und AbstandAnzeigemodus des Bild-Elements prüfen
Aktionskachel, Kampagnenblockoft eigenes Rastereigene Liste je Blockvor dem Aktionsstart im Layout nachmessen
Cross-Selling-Leiste, Sliderhorizontal scrollendKachelbreite je UmbruchpunktFensterbreite ist keine Obergrenze
Magazin, Bild im FließtextTextspalte mit Höchstbreitemin(100vw - 32px, 760px)Höchstbreite aus dem CSS übernehmen

Für Shopware-Themes heißt das konkret: Die Werte für die Listing-Kachel stehen in einer Vorlage der Storefront, die ein eigenes Theme überschreiben kann. Wer das Raster ändert, passt diese Werte im selben Schritt an, statt sie aus dem Standard zu übernehmen. Weitere Stellschrauben im Theme fasst die Seite Shopware-Performance zusammen.

Prüfen: welche Datei der Browser wirklich lädt

Ob sizes stimmt, zeigt nicht der Quelltext, sondern die geladene Datei. MDN empfiehlt dafür das Netzwerkpanel der Entwicklerwerkzeuge und rät in Chrome, den Cache zu deaktivieren, damit der Browser nicht auf bereits geladene Bilder zurückgreift (MDN Web Docs). Filtern Sie die Liste auf Bilder und laden Sie die Seite bei mehreren Fensterbreiten neu. Wie Sie das Protokoll Zeile für Zeile lesen, beschreibt der Beitrag zum Wasserfalldiagramm.

Schneller geht es mit der Eigenschaft currentSrc. Sie nennt die Adresse des Bildes, das der Browser aus dem srcset ausgewählt hat (MDN Web Docs). Eine Falle steckt in naturalWidth: Der Wert ist um die Pixeldichte der gewählten Quelle korrigiert (HTML Living Standard) und zeigt bei w-Angaben nicht die Pixelbreite der Datei. Das folgende Snippet lädt die gewählte Datei deshalb ein zweites Mal ohne srcset und vergleicht ihre echte Breite mit dem Bedarf aus Anzeigebreite und Pixeldichte.

check-image-widths.js
// In der Konsole der Entwicklerwerkzeuge ausführen.
// Vergleicht je Bild: angezeigte Breite mal Pixeldichte gegen die Breite der geladenen Datei.
const images = [...document.images].filter(img => img.currentSrc && img.clientWidth > 0);
const rows = await Promise.all(images.map(img => new Promise(resolve => {
  const probe = new Image(); // ohne srcset: naturalWidth ist hier die echte Dateibreite
  probe.onload = probe.onerror = () => {
    const needed = Math.round(img.clientWidth * devicePixelRatio);
    resolve({
      file: img.currentSrc.split('/').pop().slice(0, 50),
      shownPx: img.clientWidth,
      neededPx: needed,
      filePx: probe.naturalWidth,
      factor: Number((probe.naturalWidth / needed).toFixed(2)),
      sizes: img.getAttribute('sizes') || '(fehlt: 100vw)'
    });
  };
  probe.src = img.currentSrc;
})));
console.table(rows.sort((a, b) => b.factor - a.factor));

Die Spalte factor sagt, um wie viel die Datei breiter ist als nötig. Ein Wert knapp über 1 ist normal, weil der Browser die nächstgrößere Stufe nimmt. Liegt der Faktor deutlich über dem Abstand zwischen zwei Stufen im srcset, stimmt sizes nicht oder fehlt. Wiederholen Sie die Messung in der Geräteemulation mit Pixeldichte 2 und 3 und bei den Fensterbreiten Ihrer Umbruchpunkte. Lazy geladene Bilder erscheinen erst in der Tabelle, wenn Sie bis zu ihnen gescrollt haben.

Auch Lighthouse und PageSpeed Insights prüfen die Bildgröße. Die frühere Prüfung „Bilder richtig dimensionieren“ ist seit Lighthouse 13 im Insight Improve image delivery aufgegangen (Chrome for Developers). Die alte Prüfung verglich die angezeigte Größe einschließlich Pixeldichte mit der Größe der geladenen Datei (Chrome for Developers). Das Insight vergleicht die Downloadgröße mit einem effizienten Verhältnis von Bytes zu Pixeln für das jeweilige Format und meldet Bilder erst ab einer geschätzten Einsparung von 4 KiB (Chrome for Developers). Es schlägt also auch bei schwacher Kompression oder ungünstigem Format an, die mit sizes nichts zu tun haben. Wie Sie solche Meldungen nach Einsparung ordnen, zeigt der Beitrag Lighthouse-Report richtig lesen; ein Lighthouse-Audit übernimmt diese Einordnung für Ihre Vorlagen.

  • Netzwerkpanel mit deaktiviertem Cache, Filter auf Bilder
  • Messung bei jeder Fensterbreite, an der das Raster umbricht
  • Geräteemulation mit Pixeldichte 1, 2 und 3
  • currentSrc und echte Dateibreite mit angezeigter Breite mal Pixeldichte vergleichen
  • Bilder ohne sizes und Bilder mit reinem vw-Wert gesondert prüfen
  • Ergebnis je Vorlage festhalten, nicht nur für die Startseite

sizes="auto": Abkürzung für Lazy-Bilder mit Rückfallwert

Für Bilder außerhalb des ersten Bildschirms gibt es inzwischen eine Abkürzung. Mit sizes="auto" nimmt der Browser die Breite aus dem berechneten Layout, statt sie aus einer Liste zu lesen; das gilt nur für Bilder mit loading="lazy" (Web Features Explorer). Der HTML-Standard verlangt, dass auto als erster Eintrag steht, und erlaubt dahinter eine Rückfallliste für Browser ohne Unterstützung (HTML Living Standard). Ohne width und height oder eine Breite im CSS wird ein solches Bild voraussichtlich mit 300 × 150 Pixeln dargestellt (HTML Living Standard).

listing-tile-lazy.html
<!-- Kachel weiter unten: Breite aus dem Layout, Liste als Rückfall -->
<img loading="lazy" width="600" height="600"
  sizes="auto,
         (min-width: 1368px) 312px,
         (min-width: 1200px) calc((100vw - 120px) / 4),
         (min-width: 768px) calc((100vw - 96px) / 3),
         calc((100vw - 44px) / 2)"
  srcset="/media/jacke-400.avif 400w, /media/jacke-600.avif 600w, /media/jacke-1000.avif 1000w"
  src="/media/jacke-600.avif" alt="Wanderjacke in Blau">

Ausgewertet wird auto laut MDN browser-compat-data in Chrome ab Version 126, in Firefox ab Version 150 und in Safari ab Version 27, dort mit einer Einschränkung bei SVG-Bildern mit object-fit (MDN browser-compat-data). Manche Übersichtsseiten führen Safari noch ohne Unterstützung; mit Rückfallliste spielt der Unterschied in der Praxis keine Rolle, denn ältere Versionen lesen die Liste hinter auto. Für das LCP-Bild hilft auto nicht, weil es nicht lazy laden soll; es braucht weiterhin eine ausdrückliche Liste. Der Almanac rät genau dazu: kritische Bilder korrigieren und für nachgeladene Bilder auto einsetzen (Web Almanac 2024). Wie das in der Vorschauleiste einer Produktseite aussieht, steht ebenfalls im Beitrag zur Produktgalerie.

Aktionskacheln zur Black Week: Bildgrößen vor dem Start prüfen

Kurz vor der Black Week kommen in vielen Shops neue Bildflächen dazu: Aktionskacheln auf der Startseite, Kampagnenblöcke in Kategorien, Banner über dem Listing. Sie werden oft kurzfristig gebaut, in voller Auflösung hochgeladen und in Bausteine gesetzt, deren Raster selten jemand nachrechnet. Genau dort entsteht der Fehler aus diesem Beitrag in seiner teuersten Form.

Eine Aktionskachel im ersten Bildschirm ist häufig das LCP-Element. Ist ihr sizes zu groß, verlängert sich die Ladezeit des größten Elements um die überflüssigen Bytes. Ist sie zusätzlich lazy ausgezeichnet, startet der Download erst nach dem Layout. Wie Sie Platz für Banner und Countdown reservieren, damit nichts springt, beschreibt der Beitrag Aktionsbanner zur Black Week. Was sonst für schnelle Kampagnenseiten zählt, fasst die Seite PageSpeed für Onlineshops zusammen.

  1. Jede neue Kachel einmal mit dem Snippet oben messen, bei mobiler und bei Desktop-Breite.
  2. Für die erste sichtbare Kachel loading="eager", fetchpriority="high" und eine ausdrückliche sizes-Liste setzen; Details im Beitrag zu fetchpriority.
  3. Für Kacheln weiter unten loading="lazy" und sizes="auto" mit Rückfallliste verwenden.
  4. Kampagnenbilder in mehreren Stufen bereitstellen statt nur in Originalgröße.
  5. Nach dem Einbau prüfen, ob dasselbe Motiv an anderer Stelle ohne sizes steht und die große Datei mitzieht.

Was eine Korrektur bringt und wo ihre Grenzen liegen

Ein passendes sizes spart Übertragung, ohne dass ein Bild schlechter aussieht. Wie viel, hängt vom Ausgangspunkt ab. Nach der Schätzung des Almanac lädt ein Viertel der Desktopseiten mit w-Angaben 180 KB oder mehr zu viel, mindestens die Hälfte dieser Seiten dagegen nichts (Web Almanac 2024). Ob Ihr Shop zur ersten oder zur zweiten Gruppe gehört, zeigt die Messung je Vorlage.

Grenzen hat die Korrektur dort, wo das Problem nicht die Breite ist. Format und Kompression stehen auf einem anderen Blatt; dazu mehr im Beitrag über WebP und AVIF. Auch die Reihenfolge des Ladens ändert sizes nicht: Ein LCP-Bild, das spät entdeckt oder lazy geladen wird, bleibt spät, auch wenn die Datei klein ist. Und ob die Verbesserung bei echten Besuchern ankommt, zeigen erst Felddaten, etwa im Core-Web-Vitals-Bericht der Search Console.

Bei einer Bildoptimierung gehen wir genau diesen Weg: Wir listen die Bildstellen je Vorlage, messen geladene gegen benötigte Breite bei mehreren Fensterbreiten und Pixeldichten, leiten sizes aus dem Raster ab und messen danach erneut. In Shopware-Shops passen wir dafür die Vorlagen des Themes an. Wenn Sie zuerst wissen möchten, wo Ihr Shop steht, beginnt das mit einer Analyse der wichtigsten Vorlagen. Welche Messgrößen dabei zählen, erklärt die Seite zu den Core Web Vitals.

Quellen und Dokumentation

Dieser Artikel basiert auf Daten aus: HTTP Archive Web Almanac 2024 (Kapitel Media); HTML Living Standard (Images, Embedded content); MDN Web Docs (Using responsive images in HTML; HTMLImageElement: currentSrc property); MDN browser-compat-data (img sizes auto); web.dev (Learn Images: Descriptive syntaxes); Chrome for Developers (Properly size images; Improve image delivery); Web Features Explorer (sizes-auto); Shopware-Quellcode, Version 6.7.15.1 (Produktkachel, Vorschaubild-Funktion, Bild-Element, Stylesheet der Erlebniswelten).

Verwandte Artikel

Core Web Vitals & Messung

Wasserfalldiagramm lesen: was jede Zeile über Tempo verrät

Wasserfalldiagramm lesen: wie es geordnet ist, was die Phasen eines Balkens zeigen und welche sechs Muster über mehrere Zeilen typische Bremsen verraten.

20 Min. Lesezeit
Server & Hosting

WordPress trotz Cache langsam: WP-Cron und admin-ajax

Seiten-Cache aktiv, WordPress trotzdem träge? WP-Cron, Heartbeat und admin-ajax gehen am Cache vorbei und belegen PHP-Worker. So messen und entlasten Sie sie.

19 Min. Lesezeit
Frontend-Optimierung

Weniger JavaScript: Dialog und Popover direkt in HTML

Dialog, Menü und Filter-Schublade ohne Skript: was command und commandfor seit Dezember 2025 leisten, welcher Rückfall nötig ist und was es für INP bringt.

17 Min. Lesezeit