A lazy loading az a betöltési mód, amelynél a böngésző csak akkor tölti le a képet vagy az iframe-et, amikor az közel kerül a látható területhez. A hajtás alatti tartalom így nem versenyez az első képernyő erőforrásaiért.
Hogyan működik
Két út létezik. A natív megoldásnál az <img> tagre kerül egy loading="lazy" attribútum, a többit a böngésző intézi. A JavaScript-alapú megoldásnál egy script figyeli a görgetést, és menet közben cseréli ki a kép címét.
A natív változatot minden nagy böngésző támogatja. Új projektben nincs jó indok a scriptes megoldásra.
Mit gyorsít valójában
A lazy loading nem csökkenti a letöltött adat teljes mennyiségét. Időben osztja szét. A nyereség az első képernyőn jelentkezik: kevesebb párhuzamos kérés indul, és hamarabb megérkezik a fő kép. Ettől javulhat az LCP és a mért betöltési idő.
A hatás akkor érezhető, ha sok kép van a hajtás alatt. Egy hosszú terméklistán ez húsz kérést is jelenthet. Egy háromképes bemutatkozó oldalon alig mérhető.
Miért érdekli a robotokat
A keresők és az AI-crawlerek nem görgetnek úgy, mint egy ember. Sok bot JavaScriptet sem futtat. A natív lazy loading ezért biztonságos: a valódi cím ott marad a src attribútumban, és a nyers HTML-ből kiolvasható.
A scriptes megoldás kockázatos. Ha a cím csak data-src értékben ül, a robot nem talál képet. Ilyenkor hiába van jó alt szöveg, a kép kimarad a képkeresőből.
Röviden: a hajtás alatti képre tedd rá a loading="lazy" attribútumot, a hajtás feletti fő képre soha.
Technikai példa
A hajtás feletti fő kép és egy hajtás alatti kép helyes jelölése:
<!-- Fő kép: nincs lazy, van prioritás -->
<img src="/kepek/hero-1200.avif"
width="1200" height="630"
fetchpriority="high"
alt="Kék munkavédelmi bakancs oldalnézetből">
<!-- Hajtás alatti kép: lazy, fix mérettel -->
<img src="/kepek/termek-42-800.webp"
width="800" height="800"
loading="lazy" decoding="async"
alt="Fekete bőr munkavédelmi cipő">
<!-- Beágyazott videó: iframe-en is működik -->
<iframe src="https://www.youtube.com/embed/AZONOSITO"
width="560" height="315" loading="lazy"
title="Terméktesztünk"></iframe>
Gyors számolás a nyers HTML-ben, JavaScript futtatása nélkül:
curl -s https://pelda.hu | grep -o '<img' | wc -l
curl -s https://pelda.hu | grep -o 'loading="lazy"' | wc -l
curl -s https://pelda.hu | grep -o 'data-src=' | wc -l
Az első két szám különbsége adja a lazy nélküli képek számát. Ha a harmadik szám nem nulla, scriptes lazy load fut az oldalon, és azt érdemes natívra cserélni.
Gyakori kérdések
Rátehetem minden képre a loading="lazy" attribútumot?
Nem érdemes. A hajtás feletti képeken, főleg a legnagyobb megjelenő elemen, a lazy érték késlelteti a betöltést. Ott inkább fetchpriority="high" attribútumot használj. A szabály egyszerű: ami az első képernyőn látszik, az töltsön azonnal.
Árt-e a SEO-nak a lusta betöltés?
A natív loading="lazy" nem árt, mert a kép címe benne marad a HTML-ben. A JavaScript-alapú megoldás viszont elrejtheti a képet a robotok elől. Ha a cím csak data-src attribútumban van, a kép kimaradhat a képtalálatokból.
Miért ugrál az oldal, amióta bekapcsoltam?
Mert a képeknek nincs megadott mérete. A böngésző csak a letöltés után tudja meg, mekkora helyet foglalnak. Írj ki
width és
height értéket, vagy adj CSS
aspect-ratio szabályt. Ettől a
CLS is rendbe jön.
Kell külön plugin hozzá?
A legtöbb esetben nem. A böngészők natívan támogatják az attribútumot, a WordPress pedig magától kiteszi a tartalmi képekre. Plugin akkor indokolt, ha a sablon saját képkiírást használ, és azt nem tudod módosítani.
Mennyit gyorsul ettől az oldal?
Attól függ, hány kép van a hajtás alatt. Egy hosszú terméklistán ez több száz kilobájtnyi megspórolt kezdeti forgalom. Egy rövid, képszegény oldalon a különbség alig mérhető. Nagy képeknél a formátumváltás többet hoz.