Tartalomkészítés.hu

LCP: teljes útmutató

Technikai SEO

Az LCP (Largest Contentful Paint) azt méri, mennyi idő telik el az oldal betöltésének kezdetétől addig, amíg a nézetben látható legnagyobb kép vagy szövegblokk megjelenik. A Core Web Vitals egyik mutatója, a betöltési élményt írja le. Jó értéknek a 2,5 másodperc vagy kevesebb számít, a látogatások 75. percentilisén mérve, mobilon és asztalon külön.

Alapfogalmak

Az LCP a felhasználó szemszögéből nézi a betöltést. A régebbi mutatók, például a teljes betöltés ideje vagy a DOMContentLoaded esemény, technikai pillanatokat jelöltek, amelyek gyakran semmit nem mondtak arról, mikor látja a látogató a lényeget. Az LCP ehelyett azt a pillanatot rögzíti, amikor a nézet legnagyobb tartalmi eleme kirajzolódik. A gondolat egyszerű: ha a legnagyobb elem már látszik, a látogató jó eséllyel úgy érzi, hogy az oldal betöltött, és elkezdheti használni.

A mutató a Core Web Vitals három eleme közül az egyik. A másik kettő az interakciós válaszkészséget mérő INP és a vizuális stabilitást mérő CLS. A három együtt a Google oldalélmény-jelzéseinek része. Az LCP tehát nem önálló rangsorolási csodaszer, hanem egy mérhető minőségi jelzés, amely mellett a tartalom relevanciája továbbra is sokkal nagyobb súlyú.

Mely elemek lehetnek LCP-elemek?

A böngésző nem minden elemet vesz figyelembe. A specifikáció szerint az LCP-jelöltek köre szűk, és ez sok félreértést tisztáz:

  • Képek, vagyis az img elemek.
  • SVG-n belüli image elemek.
  • Videók poszterképe, illetve a videó első megjelenített képkockája.
  • CSS háttérképek, ha url() függvénnyel töltődnek be.
  • Szöveget tartalmazó blokkszintű elemek, például egy nagy címsor vagy bekezdés.

Az elem méretét a nézetben látható része alapján számolja a böngésző. Ha egy kép nagyobb, mint a képernyő, csak a látható terület számít. Ha egy képet a CSS kisebbre méretez, mint a természetes mérete, a kisebb érték számít. A margó, a kitöltés és a szegély nem része a méretnek.

A küszöbértékek

MinősítésLCP értékMit jelent a gyakorlatban
Jó2,5 másodperc vagy kevesebbA fő tartalom gyorsan megjelenik, nincs teendő
Javítandó2,5 és 4 másodperc közöttÉrdemes megkeresni a legnagyobb késleltetési részt
Gyenge4 másodperc felettA látogató érezhetően vár, a javítás prioritás

A minősítés nem egyetlen mérésre vonatkozik. A Google a valós látogatásokból gyűjtött adatok 75. percentilisét nézi, vagyis akkor jó egy oldal, ha a látogatások legalább háromnegyedében teljesül a küszöb. Ez szándékos: a lassú eszközök és gyenge hálózatok is beleszámítanak, ezért egy gyors fejlesztői gépen mért szép érték még nem garancia.

Laboratóriumi és terepi LCP

Az LCP-t kétféleképpen lehet mérni. A laboratóriumi mérés egy szimulált környezetben tölti be az oldalt, rögzített eszközzel és hálózattal. Ez jól ismételhető, ezért hibakeresésre kiváló. A terepi mérés a valódi látogatók böngészőiből származik, és azt mutatja, amit a felhasználók ténylegesen tapasztalnak. A kettő gyakran eltér, és ez nem hiba: a laborban nincs gyorsítótár, nincs bejelentkezett állapot, nincs sütisáv, a terepen viszont mindez előfordul. A keresőt a terepi adat érdekli, a fejlesztőt a labor segíti.

Hogyan működik?

A böngésző a betöltés során folyamatosan figyeli, melyik a legnagyobb tartalmi elem a nézetben. Amikor egy új elem kirajzolódik, a böngésző egy bejegyzést készít róla. Ha később megjelenik egy még nagyobb elem, új bejegyzés születik, és az lesz az aktuális jelölt. Egy tipikus oldalon először a címsor lehet a legnagyobb elem, majd amikor a fő kép betöltődik, az veszi át a helyét. Az LCP értéke az utolsó jelölt megjelenésének ideje.

A figyelés nem tart örökké. Amint a felhasználó interakcióba lép az oldallal, például kattint, koppint vagy billentyűt nyom, a böngésző leállítja az új jelöltek rögzítését. A görgetés is ilyen interakciónak számít. Ennek oka, hogy a felhasználói művelet után megjelenő új tartalom már nem a betöltésről szól, hanem az interakció következménye.

Az LCP négy része

A javítás kulcsa, hogy az LCP időt részekre bontjuk. A Google fejlesztői dokumentációja négy részt különít el, és mindegyiknek más a gyógymódja:

  1. Az első bájtig eltelt idő (TTFB). A navigáció kezdetétől addig, amíg a HTML első bájtja megérkezik. Ide tartozik a DNS-feloldás, a kapcsolat felépítése, az átirányítások és a szerveroldali feldolgozás.
  2. Az erőforrás betöltésének késése. A TTFB végétől addig, amíg a böngésző elkezdi letölteni az LCP-elem erőforrását, például a képet. Ha a kép csak egy későn futó szkriptből derül ki, ez a rész hosszú lesz.
  3. Az erőforrás letöltésének ideje. Maga a letöltés. Ezt a fájlméret és a hálózat határozza meg.
  4. Az elem kirajzolásának késése. A letöltés végétől a megjelenésig. Ha a fő szál más munkával van elfoglalva, vagy renderblokkoló CSS és JavaScript tartja vissza a rajzolást, ez a rész nő.

Szöveges LCP-elemnél nincs letöltendő erőforrás, ha a betűtípus már rendelkezésre áll, így a második és harmadik rész elmarad vagy nagyon rövid. Ilyenkor a TTFB és a kirajzolási késés dominál. Képes LCP-nél viszont mind a négy rész szerepet kap, és a tapasztalat szerint a gyenge értékek gyakran a TTFB-ből és a betöltési késésből jönnek, nem magából a letöltésből.

Miért számít a felfedezhetőség?

A böngésző előtöltő szkennere a HTML-t már az elemzés közben átfutja, és korán elkezdi letölteni az ott talált képeket. Ha az LCP-kép közvetlenül a HTML-ben van egy img elemben, src vagy srcset attribútummal, a szkenner hamar megtalálja. Ha a kép CSS háttérképként egy külső stíluslapban van, vagy JavaScript szúrja be, a böngésző csak később tud róla, és a betöltési késés megnő. Ezért a felfedezhetőség gyakran fontosabb, mint a fájlméret.

Kidolgozott példa: egy webáruház kategóriaoldala

Egy webáruház kategóriaoldalán a mobilos terepi LCP a javítandó sávban volt. A laboratóriumi mérés megmutatta, hogy az LCP-elem a fejléc alatti szalagkép. A részekre bontás szerint a TTFB rendben volt, a letöltés is gyors, de a betöltési késés hosszú: a szalagképet egy csúszka szkriptje szúrta be, miután betöltődött. Ráadásul a képen lazy loading attribútum volt. A javítás három lépésből állt. A csúszka első képe bekerült a HTML-be sima img elemként, lekerült róla a lusta betöltés, és magas letöltési prioritást kapott. A következő laboratóriumi mérésben a betöltési késés gyakorlatilag eltűnt, a terepi adat pedig a következő hetekben fokozatosan javult, ahogy az új látogatások felváltották a régieket.

Fő módszerek

Az LCP javításának nincs egyetlen receptje, mert a négy rész közül mindig az a legfontosabb, amelyik a legtöbb időt viszi. A helyes sorrend ezért: először mérni, melyik rész a leghosszabb, utána arra a részre célzott módszert alkalmazni. Az alábbi módszerek részenként csoportosítva mutatják a lehetőségeket.

A TTFB csökkentése

  • Szerveroldali gyorsítótár. Ha a HTML-t nem kell minden kérésre újragenerálni, a szerver sokkal gyorsabban válaszol. A cache beállítása gyakran a leggyorsabb nyereség.
  • CDN. A CDN a látogatóhoz közelebbi pontról szolgálja ki a tartalmat, és rövidíti a kapcsolat felépítését.
  • Átirányítások kerülése. Minden átirányítás egy újabb oda-vissza kör a szerverrel. A belső linkek mutassanak közvetlenül a végleges URL-re.
  • Lassú háttérlekérdezések javítása. Adatbázis-lekérdezések, külső API-hívások a HTML előállítása közben.

A betöltési késés megszüntetése

Az LCP-kép legyen a HTML-ben felfedezhető. Ha ez nem oldható meg, például mert a kép háttérképként kell, hogy megjelenjen, egy preload hivatkozás a dokumentum fejében korán jelezheti a böngészőnek. A fetchpriority="high" attribútum az img elemen azt kéri a böngészőtől, hogy a képet a többi kép előtt töltse le. Ez különösen akkor hasznos, ha az oldalon sok kép van, és a böngésző alapból nem tudná, melyik a fontos.

A leggyakoribb és legkönnyebben javítható hiba a lusta betöltés rossz használata. A lazy loading a hajtás alatti képeknél hasznos, de az LCP-képnél késlelteti a letöltést, mert a böngésző csak akkor kezdi el, amikor megállapította, hogy a kép a nézetben van. Az első képernyőn látható fő képről ezért le kell venni a loading="lazy" attribútumot.

A letöltési idő rövidítése

  • Modern képformátumok. A WebP és az AVIF általában kisebb fájlt ad hasonló minőségben.
  • Reszponzív képek. A srcset és a sizes attribútum segítségével a mobil ne töltse le az asztali méretű képet.
  • Tömörítés. A kép minőségi beállítása gyakran csökkenthető látható romlás nélkül.
  • Ugyanarról a kiszolgálóról. Ha a kép külön domainről jön, új kapcsolatot kell felépíteni. Ilyenkor a preconnect segíthet.

A kirajzolási késés csökkentése

Ha a kép már megérkezett, de még nem látszik, a fő szál vagy a renderblokkoló erőforrások a hibásak. A kritikus CSS beágyazása a HTML-be, a többi stílus késleltetett betöltése, és a nem szükséges JavaScript defer vagy async betöltése mind ezt a részt rövidíti. Kliensoldali renderelésnél a teljes tartalom csak a szkriptek lefutása után jelenik meg, ezért ilyen oldalaknál a szerveroldali renderelés vagy az előre generált HTML gyakran látványos javulást hoz. A részletekért lásd a kliensoldali renderelés útmutatót is.

Döntési szabály

Ha a leghosszabb részAkkor először ezt nézd
TTFBSzerveroldali gyorsítótár, CDN, átirányítások, háttérlekérdezések
Betöltési késésFelfedezhetőség a HTML-ben, lazy loading eltávolítása, fetchpriority, preload
Letöltési időFormátum, méretezés, tömörítés, külső domain
Kirajzolási késésRenderblokkoló CSS és JavaScript, kliensoldali renderelés, hosszú feladatok

Gyakori hibák

Az LCP-vel kapcsolatos hibák nagy része nem technikai tudáshiányból fakad, hanem abból, hogy a csapat nem azt méri, amit a látogató tapasztal, vagy nem azt az elemet optimalizálja, amelyik ténylegesen az LCP-elem. Az alábbi hibák visszatérően előfordulnak.

Lusta betöltés a fő képen

Sok tartalomkezelő és sablon minden képre automatikusan ráteszi a loading="lazy" attribútumot. Ez a hajtás alatti képeknél jó, a fő képnél viszont az LCP egyik legismertebb rontója. A javítás egyszerű, de gyakran sablonszinten kell elvégezni, mert kézzel minden oldalon nem kivitelezhető.

Rossz elem optimalizálása

Gyakori, hogy a csapat a fejléc logóját vagy egy dekoratív képet tömörít, miközben az LCP-elem valójában egy nagy címsor vagy egy szalagkép. Mielőtt bármit javítanál, nézd meg a mérőeszközben, melyik elem az LCP-elem az adott oldaltípuson, mobilon és asztalon külön, mert a kettő eltérhet.

Csak laboratóriumi mérésre hagyatkozás

Egy szép laboratóriumi érték nem jelenti, hogy a terepi adat is jó. Ha a látogatók jelentős része lassú mobilhálózaton érkezik, vagy a sütisáv, a bejelentkezési állapot és a személyre szabott tartalom más LCP-elemet ad, a terepi érték rosszabb lehet. Fordítva is igaz: a laborban lassú oldal a valóságban gyorsabb lehet a gyorsítótár miatt.

Tévhit: a fájlméret a legfontosabb

Sokan azt hiszik, hogy az LCP javítása egyenlő a képek tömörítésével. A részekre bontás gyakran mást mutat: a letöltési idő rövid, a TTFB és a betöltési késés viszont hosszú. Ilyenkor a tömörítés alig hoz eredményt. Az ellenpélda a fenti webáruház: a kép kicsi volt, mégis későn jelent meg, mert a böngésző későn tudott róla.

További visszatérő hibák

  • Szkript által beszúrt szalagkép vagy csúszka, amely csak a JavaScript lefutása után jelenik meg.
  • Az A/B tesztelő eszköz elrejtő szkriptje, amely a teszt betöltéséig láthatatlanná teszi az oldalt.
  • Webes betűtípus, amely blokkolja a szöveg megjelenítését, ha a font-display beállítás nem engedi a tartalék betűtípust.
  • Átirányítási lánc a céloldal előtt, például kampánylinkeknél, amely minden lépéssel növeli a TTFB-t.
  • Túl sok magas prioritású erőforrás, amely miatt a prioritás elveszti az értelmét.

Mérés

Az LCP mérése két rétegű. A terepi adat megmondja, van-e probléma és hol, a laboratóriumi adat megmondja, miért. A jó munkafolyamat a terepi adatból indul, a laborban diagnosztizál, majd a terepi adatban ellenőrzi az eredményt. A terepi adatok halmozottak, ezért egy javítás hatása csak fokozatosan látszik bennük.

Eszközök és szerepük

EszközAdattípusMire jó
Search Console, Core Web Vitals jelentésTerepiOldalcsoportok szerint mutatja, hol van gyenge vagy javítandó LCP
PageSpeed InsightsTerepi és laboratóriumiEgy URL terepi adata, ha van elég, és egy Lighthouse-futtatás diagnosztikával
Chrome UX ReportTerepiA Chrome-felhasználók összesített adatai, történeti elemzésre
Chrome fejlesztői eszközök, Performance panelLaboratóriumiMegmutatja az LCP-elemet és a részek idejét
LighthouseLaboratóriumiIsmételhető mérés, javaslatokkal
Saját valós felhasználói mérésTerepiA web-vitals könyvtárral gyűjtött adat, oldaltípusra és elemre bontva

Munkafolyamat lépésről lépésre

  1. A Search Console jelentésében keresd meg azokat az URL-csoportokat, ahol az LCP gyenge vagy javítandó.
  2. Válassz egy jellemző URL-t a csoportból, és nézd meg a PageSpeed Insightsban a terepi és a laboratóriumi adatot.
  3. Azonosítsd az LCP-elemet mobilon és asztalon.
  4. Bontsd részekre az LCP-t a fejlesztői eszközökben, és keresd meg a leghosszabb részt.
  5. Alkalmazd a részhez tartozó módszert, lehetőleg sablonszinten, hogy az egész oldalcsoportra hasson.
  6. Ellenőrizd a laborban, hogy a rész rövidült.
  7. Kövesd a terepi adatot a következő hetekben. A Search Console-ban az érvényesítés indítható.

Kidolgozott példa: blog szöveges LCP-vel

Egy szakmai blog cikkoldalain mobilon a nagy címsor volt az LCP-elem. A terepi adat javítandó értéket mutatott, pedig a cikkekben kevés kép volt. A laboratóriumi mérés szerint a TTFB hosszú volt, mert a szerver minden kérésre újragenerálta az oldalt, a kirajzolást pedig egy külső betűtípus visszatartotta. A csapat bekapcsolta az oldalgyorsítótárat, és a betűtípusnál a font-display: swap beállítást használta, hogy a szöveg tartalék betűtípussal azonnal megjelenhessen. A labor mindkét rész rövidülését mutatta. Ez a példa azt is mutatja, hogy szöveges LCP-elemnél a képoptimalizálás semmit nem ért volna.

Mire figyelj a terepi adatnál?

Ha egy URL-nek nincs elég forgalma, a terepi adat az URL helyett a teljes forrásra vonatkozhat, vagy teljesen hiányozhat. Ilyenkor a saját valós felhasználói mérés adhat pontosabb képet. Az LCP értéke az oldal típusától is függ: egy termékoldal és egy blogcikk más elemet jelenít meg elsőként, ezért az adatokat oldaltípusonként érdemes elemezni. A változtatás hatását mindig a saját korábbi értékekhez mérd, ne egy másik webhelyhez.

Ellenőrzőlista

  • Tudod, melyik elem az LCP-elem a fő oldaltípusokon, mobilon és asztalon?
  • Az LCP-kép közvetlenül a HTML-ben van, lusta betöltés nélkül?
  • Van rajta fetchpriority="high", ha az oldalon sok kép van?
  • A TTFB rendben van, és nincs átirányítás a céloldal előtt?
  • A kép megfelelő formátumú és méretű a mobil nézethez?
  • Nincs renderblokkoló szkript, amely visszatartja a kirajzolást?
  • A terepi adat a 75. percentilisen a jó sávban van?

Kapcsolódó részletes útmutatók

Csináltassuk meg helyetted

Ha ez sok, mi elvégezzük. Egy munkanapon belül konkrét ajánlatot kapsz.

Ajánlatot kérek