Ha egy weboldal sok képet tartalmaz, az összes kép betöltése az oldal megnyitásakor szükségtelenül megnöveli az első betöltési időt. A lazy loading — vagy halasztott betöltés — egy olyan technika, amely lehetővé teszi, hogy minden képet csak akkor töltsön be, amikor a felhasználó éppen látni fogja azt. Könnyen megvalósítható, és jelentősen javítja a webhely teljesítményét és a felhasználói élményt.
A lazy loading meghatározása
A lazy loading (szó szerint «lusta betöltés») azt jelenti, hogy késleltetjük a nem azonnal látható erőforrások betöltését. Képekre alkalmazva ez azt jelenti, hogy csak az oldal betöltésekor a látható területen (viewport) lévő képek töltődnek le azonnal. A többi kép fokozatosan töltődik be, ahogy a felhasználó görget az oldalon.
Lazy loading nélkül a böngésző az oldal összes képét letölti, amint megnyílik — beleértve az alján lévőket is, amelyeket a felhasználó esetleg soha nem lát.
Hogyan működik a lazy loading?
Két fő megközelítés létezik a képek lazy loadingjának megvalósítására:
1. A natív HTML loading="lazy" attribútum
2019 óta a modern böngészők natívan támogatják a lazy loadingot egy egyszerű HTML attribútumon keresztül:
<img src="photo.jpg" alt="Leírás" loading="lazy">A böngésző automatikusan dönti el, mikor töltse be a képet a felhasználó görgetési pozíciója alapján. Ez a ma ajánlott módszer: nincs szükség JavaScript könyvtárra.
2. Az Intersection Observer API (JavaScript)
Mielőtt a natív attribútumot szabványosították volna, a fejlesztők az Intersection Observer API-t használták annak észlelésére, mikor lép be egy kép a viewportba, és ekkor aktiválták a betöltését. Ez a megközelítés hasznos marad fejlettebb viselkedésekhez vagy képek belépési animációihoz.
Mik a lazy loading előnyei?
Teljesítmény és betöltési idő
Az indításkor betöltött képek számának csökkentésével a lazy loading csökkenti az oldal kezdeti súlyát és felgyorsítja a megjelenítést. Az olyan teljesítménymutatók, mint a Largest Contentful Paint (LCP) és a Time to Interactive (TTI) ennek eredményeként javulnak.
Sávszélesség-megtakarítás
Az oldal alján lévő képek csak akkor töltődnek le, ha a felhasználó ténylegesen odaér. Egy sok vizuális elemet tartalmazó hosszú oldalon ez jelentős megtakarítást jelenthet — különösen mobilon vagy lassú kapcsolaton lévő látogatók számára.
SEO és Core Web Vitals
A Google figyelembe veszi a Core Web Vitals mutatókat a rangsorolásban. A képbetöltéstől közvetlenül befolyásolt jobb LCP pozitív hatással lehet a keresési eredményekben elfoglalt pozícióra.
Lazy loading: amit nem szabad tenni
A lazy loading nem alkalmas minden képhez. Két gyakori hibát kell elkerülni:
- Soha ne alkalmazza a
loading="lazy"attribútumot hero képekre vagy a hajtás feletti képekre — ezek a képek láthatók a betöltéskor, késleltetésük rontaná az LCP-t és a felhasználói élményt. - Ne hagyja ki a
widthésheightattribútumokat — meghatározott méretek nélkül a böngésző nem tud helyet foglalni a kép számára betöltés előtt, ami elrendezési eltolódásokat okoz, amelyek ártanak a Cumulative Layout Shift (CLS) mutatónak.
Hasznos tudni: a betöltéskor azonnal látható képeknél (banner, hero kép, logó) használja inkább a loading="eager" attribútumot, vagy egyszerűen hagyja el az attribútumot — ez a böngésző alapértelmezett viselkedése.Böngésző-kompatibilitás
| Böngésző | loading="lazy" támogatás |
|---|---|
| Chrome | ✅ A 77-es verziótól (2019) |
| Firefox | ✅ A 75-ös verziótól (2020) |
| Safari | ✅ A 15.4-es verziótól (2022) |
| Edge | ✅ A 79-es verziótól (2020) |
| Internet Explorer | ❌ Nem támogatott |
Lazy loading és képtárhely
Amikor képtárhely-szolgáltatást használ vizuális tartalmak tárolásához és terjesztéséhez, mindig emlékezzen arra, hogy a nem azonnal látható képekhez adja hozzá a loading="lazy" attribútumot. A nagy teljesítményű tárhelyszolgáltatás (CDN, automatikus tömörítés) és a lazy loading kombinációja maximalizálja az oldalak megjelenítési sebességét.
Hasznos tudni: egy minőségi képtárhely-szolgáltatás stabil közvetlen URL-eket biztosít minden képhez, ami megkönnyíti a lazy loading integrációját: egyszerűen adja hozzá aloading="lazy"attribútumot az<img>taghez a forrás URL módosítása nélkül.