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ünftesizes-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 aussrcsetdurch diese Breite und gleicht das Ergebnis mit der Pixeldichte ab. Ein Fehler insizeswird so mit der Pixeldichte multipliziert. -
sizeswird 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:
currentSrcund 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 mitloading="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ücklichesizes-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 mitsizes="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.
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.
| Situation | Breite laut sizes | Pixeldichte | benötigte Breite | gewählte Datei |
|---|---|---|---|---|
Desktop, sizes fehlt | 1440 px (100vw) | 1 | 1440 px | 1600w |
Desktop, sizes fehlt | 1440 px (100vw) | 2 | 2880 px | 1600w, größte Stufe |
Desktop, sizes passt | 300 px | 1 | 300 px | 400w |
Desktop, sizes passt | 300 px | 2 | 600 px | 600w |
Smartphone, sizes fehlt | 390 px (100vw) | 3 | 1170 px | 1600w |
Smartphone, zwei Spalten, sizes passt | 180 px | 3 | 540 px | 600w |
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.
-
sizesfehlt ganz. Das passiert häufig in eigenen Templates, Plugins und Seitenbausteinen, die einsrcseterzeugen, aber keinsizesmitgeben. In Shopware erzeugt die Vorschaubild-Funktion keinsizes, 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.
sizeswird 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 mitmin(), denn mathematische Funktionen sind insizeserlaubt (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-widthmuss 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-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 Bildstelle | Raster | Ansatz für sizes | Worauf achten |
|---|---|---|---|
| Startseite, Kopfbild über die volle Breite | eine Spalte, randlos | 100vw | LCP-Bild: eager laden, sizes ausdrücklich setzen |
| Listing, Produktkachel | zwei bis fünf Spalten je Umbruchpunkt | calc() je Umbruchpunkt, fester Wert ab Containerbreite | nach jeder Änderung an Spaltenzahl oder Filterleiste prüfen |
| Erlebniswelt mit zwei oder drei Bildspalten | Spalten im Inhaltsbereich | Spaltenbreite aus Containerbreite und Abstand | Anzeigemodus des Bild-Elements prüfen |
| Aktionskachel, Kampagnenblock | oft eigenes Raster | eigene Liste je Block | vor dem Aktionsstart im Layout nachmessen |
| Cross-Selling-Leiste, Slider | horizontal scrollend | Kachelbreite je Umbruchpunkt | Fensterbreite ist keine Obergrenze |
| Magazin, Bild im Fließtext | Textspalte mit Höchstbreite | min(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.
// 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
-
currentSrcund echte Dateibreite mit angezeigter Breite mal Pixeldichte vergleichen - Bilder ohne
sizesund 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).
<!-- 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.
- Jede neue Kachel einmal mit dem Snippet oben messen, bei mobiler und bei Desktop-Breite.
- Für die erste sichtbare Kachel
loading="eager",fetchpriority="high"und eine ausdrücklichesizes-Liste setzen; Details im Beitrag zu fetchpriority. - Für Kacheln weiter unten
loading="lazy"undsizes="auto"mit Rückfallliste verwenden. - Kampagnenbilder in mehreren Stufen bereitstellen statt nur in Originalgröße.
- Nach dem Einbau prüfen, ob dasselbe Motiv an anderer Stelle ohne
sizessteht 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
sizes fehlt oder nicht mehr zum Layout passt. Ohne sizes rechnet der Browser mit der vollen Fensterbreite (HTML Living Standard) und wählt eine Datei für diese Breite, multipliziert mit der Pixeldichte. Eine zweite Ursache: Dieselbe Datei wurde an anderer Stelle der Seite schon groß geladen, und der Browser darf sie wiederverwenden. Eine Messung mit deaktiviertem Cache trennt beide Fälle.sizes, sobald srcset Breitenangaben enthält. Browser verarbeiten ein fehlendes sizes zwar, nehmen dann aber 100vw an (HTML Living Standard). Bei Bildern, die über die volle Breite laufen, ist das richtig; bei Kacheln, Spalten und Bildern im Fließtext führt es zu zu großen Dateien.sizes ist ein Hinweis, eine kleine Abweichung ist ausdrücklich vorgesehen (Web Almanac 2024). Kritisch wird es, wenn der Wert so weit danebenliegt, dass der Browser eine andere Stufe aus srcset wählt. Lieber etwas zu groß als zu klein, denn ein zu kleiner Wert führt zu einer hochskalierten, unscharfen Darstellung. Für die Kontrolle reicht der Vergleich von geladener und benötigter Breite an den Umbruchpunkten.auto wirkt nur bei Bildern mit loading="lazy" (HTML Living Standard). Das LCP-Bild und andere Bilder im ersten Bildschirm sollen nicht lazy laden und brauchen deshalb eine ausdrückliche Liste. Für Bilder weiter unten ist auto mit Rückfallliste sinnvoll: Chrome ab 126, Firefox ab 150 und Safari ab 27 mit Einschränkungen werten es aus (MDN browser-compat-data), ältere Versionen nehmen die Liste dahinter.sizes, im zweiten Format und Kompression.sizes dagegen aus der Spaltenzahl des Blocks, außer das Bild-Element steht im Anzeigemodus „Standard“; dann verwendet es die Originalbreite der Datei (Shopware-Quellcode).Verwandte Artikel
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.
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.
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.