Sebesség Szakszó

INP (Interaction to Next Paint)

Szerző: · 8 perc olvasás · Frissítve:
INP (Interaction to Next Paint) - Sebesség (szakszó) a tudástárban
INP (Interaction to Next Paint) - Sebesség | eClick GEO-audit tudástár

Az INP (Interaction to Next Paint) azt méri, mennyi idő telik el a látogató interakciója és a képernyő következő vizuális frissítése között. A Core Web Vitals egyik hivatalos mérőszáma, és azt mutatja meg, mennyire érzi válaszkésznek az oldalt az, aki éppen használja.

Hogyan működik

A böngésző minden kattintást, koppintást és billentyűleütést megmér. Egy interakció ideje három szakaszból áll:

  • input delay: amíg a böngésző hozzá tud kezdeni az eseménykezelőhöz, mert a fő szál más munkával van elfoglalva
  • processing time: maga az eseménykezelő JavaScript futása
  • presentation delay: amíg a böngésző ki is rajzolja az új állapotot

Az oldal INP-értéke nagyjából a legrosszabb interakció ideje az adott látogatás alatt. Nem az átlag számít, hanem a rossz élmény.

Mit mér és mit nem

Az INP csak a valódi beavatkozást nézi: kattintás, koppintás, billentyűzet. A görgetés és az egérmozgás nem számít bele. A tiszta betöltési sebesség sem: azt az LCP (Largest Contentful Paint) és a FCP (First Contentful Paint) mutatja. Tipikus INP-gyilkos egy szűrő, egy legördülő menü, egy kosárba tevés gomb vagy egy nagy termék-lista újrarajzolása.

Küszöbök és adatforrás

A Google határértékei egyszerűek. 200 ms alatt jó, 200 és 500 ms között javítandó, 500 ms felett rossz. Az értékelés a valós látogatók adatainak 75. percentilisén (p75) alapul, a CrUX: mezei vs labor adat adatbázisból. Ez azt jelenti, hogy a látogatók háromnegyedének legalább ilyen jó élményt kell kapnia.

Röviden: az INP nem a betöltésről szól, hanem arról, hogy használat közben akad-e az oldal.

Miért fontos

Keresők

Az INP a Core Web Vitals része, tehát része a Google oldalélmény-jelzéseinek. Nem ez dönti el a helyezést, de szoros mezőnyben számíthat. Ennél fontosabb, hogy a Search Console külön riportban jelzi a rossz INP-t, URL-csoportokra bontva.

Üzlet

A lassú válasz valódi pénzbe kerül. Ha a kosárba tevés gomb 600 ms-ig nem csinál semmit, a látogató újra rákattint. Ebből lesz a duplán hozzáadott termék vagy a dupla űrlapküldés. A riportokban ezt látjuk a leggyakrabban webshopoknál: a szűrő működik, csak másfél másodperc múlva.

AI és gépi olvasók

Az INP a nyelvi modellek szempontjából közvetve számít. Egy AI-ügynök (agent) vagy egy fetch-elő bot nem kattintgat, de az a JavaScript-tömeg, ami az INP-t rontja, jellemzően a tartalom megjelenítését is késlelteti. Ha a lényegi szöveg csak interakció után renderelődik, az AI-értelmezhetőség: mit ért egy nyelvi modell az oldaladból is romlik.

Kikre vonatkozik

Vonatkozik rá minden olyan oldal, ahol a látogató csinál is valamit. Webshopok, foglalási rendszerek, konfigurátorok, szűrhető listaoldalak, több lépcsős űrlapok: itt a legnagyobb a tét.

Kevésbé kritikus egy egyszerű bemutatkozó oldalon vagy blogbejegyzésen. Ott legfeljebb a mobil menü és a süti-sáv az egyetlen interakció.

Nem értékelhető:

  • kis forgalmú oldalakon, ahol nincs elég valós látogató a CrUX-mintához (lásd „Nem ellenőrizhető” állapot)
  • staging és jelszóval védett környezetben
  • friss domainen, ahol még nem gyűlt össze 28 nap adata

A mobil és az asztali érték külön él. A magyar KKV-oldalak többségén a mobil INP a rosszabb, mert a gyengébb telefonok fő szála hamarabb telítődik.

Hogyan ellenőrzöd

Valós adat (ez a mérvadó)

  1. Nyisd meg a PageSpeed Insights oldalt, és írd be az URL-t.
  2. A felső blokk a valós felhasználói adat. Keresd az INP sort, külön mobilra és asztalra.
  3. Nézd meg az „Ez az URL” és az „Origin” fület is. Ha az URL-re nincs adat, a domain-szintű érték segít.
  4. A Search Console Core Web Vitals riportjában látod, mely URL-csoportok rosszak.

Labor és hibakeresés

  1. Chrome DevTools, Performance panel, mobil CPU-lassítás 4x vagy 6x.
  2. Indíts felvételt, kattints a gyanús elemre, állítsd le.
  3. Az Interactions sávon látod az interakció hosszát és a három szakaszt.
  4. Hosszú feladatokat a Main sávon keresel: az 50 ms feletti blokkok a ludasok.

Jó jel:

  • p75 INP 200 ms alatt mobilon is
  • a felvételen egyetlen 50 ms feletti feladat sincs kattintás után

Rossz jel:

  • p75 INP 500 ms felett
  • a mobil érték az asztali kétszerese vagy több
  • a TBT (Total Blocking Time) laborban magas, mert a kettő ugyanarra a gyökérokra mutat

Mit néz ebből a riport

Az audit a CrUX p75 INP-értékét kéri le, és a 200/500 ms küszöbök szerint értékeli. A szabály hatása magas, a hatóköre kód. Ha az oldalnak nincs elég valós forgalma, a riport nem ellenőrizhetőnek jelöli, nem pedig hibásnak.

Hogyan javítod

A recept minden rendszerben ugyanaz: csökkentsd a fő szál terhelését. Kevesebb és később betöltő third-party script, könnyebb JavaScript, gyors eseménykezelők.

WordPress

  1. Nézd át a GTM-konténert. Minden nem kritikus tag menjen késleltetett triggerre.
  2. Kapcsold be a „JavaScript késleltetése interakcióig” opciót a cache-pluginban (WP Rocket, Perfmatters, FlyingPress).
  3. Töltsd be feltételesen a slider, popup és chat pluginokat, csak ott, ahol kell.
  4. Vizsgáld meg a page buildert. Az Elementor és a WPBakery nagy JS-csomagot hoz minden oldalra.
  5. Kapcsold ki a felesleges bővítményeket. Öt plugin, ami mindegyik külön jQuery-hívást fűz az eseményekhez, összeadódik.

Shopify

  1. Az Apps menüben töröld a már nem használt alkalmazásokat. A törölt app scriptje néha bent marad a sablonban.
  2. Nézd át a theme.liquid fejlécét kézzel beillesztett script-ekért.
  3. A szűrőt és a quick view-t a téma natív megoldásával old meg, ne külön appal.
  4. A Web Performance riport mutatja a bolt valós INP-jét.

Unas

  1. A külső kódok kezelésénél minden pixelt és chat-widgetet tegyél a body végére.
  2. Ellenőrizd, hány marketing-eszköz fut egyszerre. Két analitika és három remarketing pixel már érezhető.
  3. A termékszűrőt ne egészítsd ki saját JS-sel, ha a beépített is elég.

Shoprenter

  1. Az egyedi JavaScript-blokkokat mozgasd a sablon végére.
  2. A slider és a kiegészítő modulok számát csökkentsd a kezdőlapon.
  3. Kérj sablonfrissítést, ha régi, jQuery-alapú témán vagy.

Egyedi fejlesztés

  1. Bontsd szét a JS-csomagot. Ami nem kell az első képernyőhöz, az dinamikus importtal jöjjön.
  2. Engedd át a fő szálat hosszú feladatok közben: await scheduler.yield(), vagy fallbackként setTimeout(..., 0).
  3. Az eseménykezelőben először a vizuális visszajelzés fusson, a nehéz munka utána.
  4. Kerüld a szinkron layout-olvasást ciklusban (offsetWidth, getBoundingClientRect).
  5. Használj content-visibility: auto értéket a képernyőn kívüli, nagy listákhoz.
  6. Szüntesd meg a render-blokkoló erőforrásokat, mert ugyanaz a fő szál dolgozik mindkettőn.

Gyakori hibák

  • A Lighthouse-pontszámot nézik INP helyett: a labor nem méri az INP-t, csak a TBT (Total Blocking Time) alapján becsül, a valóság ennél rosszabb lehet.
  • Asztali gépen tesztelnek: a fejlesztői laptop fő szála sokkal erősebb, mint egy három éves androidos telefoné.
  • Minden scriptet defer-re tesznek, és kész: a defer csak a betöltést késlelteti, a kód később ugyanúgy blokkolja a fő szálat.
  • A süti-sáv marad a legnehezebb elem: a CMP (Consent Management Platform) gyakran az első interakciót fogja meg, pont a legrosszabb pillanatban.
  • Halott third-party kódok maradnak bent: kikapcsolt kampányok pixelei évekig futnak tovább a fejlécben.
  • Az eseménykezelő mindent egyben csinál: nincs köztes rajzolás, ezért a látogató 700 ms-ig semmit nem lát.
  • Javítás után azonnal újramérnek: a CrUX 28 napos gördülő ablakot használ, az eredmény hetekkel később látszik.

Technikai példa

Valós INP-mérés a saját oldaladon, a web-vitals könyvtárral. Az attribution build azt is megmondja, melyik elemre kattintottak:

<script type="module">
  import { onINP } from 'https://unpkg.com/web-vitals@4/dist/web-vitals.attribution.js?module';

  onINP((metric) => {
    console.log('INP:', Math.round(metric.value), 'ms', metric.rating);
    console.log('Elem:', metric.attribution.interactionTarget);
    console.log('Input delay:', Math.round(metric.attribution.inputDelay));
  });
</script>

A rating értéke good, needs-improvement vagy poor a 200/500 ms küszöbök szerint. Az adatot érdemes a Google Analytics 4 (GA4)-be vagy saját végpontra küldeni.

Eseménykezelő, ami nem blokkol. Előbb a vizuális visszajelzés, utána a nehéz munka:

button.addEventListener('click', async () => {
  button.classList.add('is-loading');

  // a fő szál átengedése: a böngésző kirajzolhatja a loading állapotot
  if ('scheduler' in window && 'yield' in scheduler) {
    await scheduler.yield();
  } else {
    await new Promise((resolve) => { setTimeout(resolve, 0); });
  }

  renderProductList(); // a drága rész már a rajzolás után fut
  button.classList.remove('is-loading');
});

A különbség mérhető: a kattintás és a látható változás között 30-50 ms lesz, nem 600.

Gyakori kérdések

Miért nem mutat INP-értéket a PageSpeed Insights az oldalamra?
Mert nincs elég valós látogatód. A CrUX csak akkor közöl adatot, ha a mintában elég sok Chrome-felhasználó szerepel. Kis forgalmú oldalaknál próbáld az origin-szintű adatot, az gyakran megvan. Addig laborban, a DevTools Performance paneljével tesztelj CPU-lassítással.
Az INP ugyanaz, mint a TBT?
Nem, de közeli rokonok. A TBT (Total Blocking Time) laborban mér, a betöltés alatti blokkolt időt nézi. Az INP valós látogatóktól származik, és a teljes látogatás bármely interakcióját mérheti. Ha a TBT magas, az INP is gyanús: ugyanaz a túlterhelt fő szál áll mögötte.
Mennyi idő alatt javul a mért érték, ha kijavítottuk a hibát?
A CrUX 28 napos gördülő ablakkal dolgozik. Az első elmozdulás nagyjából egy hét után látszik, a teljes hatás négy hét múlva. Türelem kell, és érdemes közben saját mérést is futtatni a web-vitals könyvtárral.
Elég, ha a mobil menü és a gombok gyorsak?
Nem feltétlenül. Az INP a látogatás legrosszabb interakcióját veszi alapul. Ha a szűrő vagy a kosárba tevés lassú, az rontja az értéket, akkor is, ha minden más pillanatszerű. Webshopnál mindig a vásárlási úton lévő interakciókat mérd először.
Rontja a Google-helyezésemet a rossz INP?
Közvetlenül alig, a tartalom és a relevancia sokkal erősebb tényező. A Core Web Vitals mint oldalélmény-jelzés szoros versenyben billenthet. Az üzleti hatás ennél nagyobb: a lassú válasz megszakított vásárlásokat és dupla küldéseket okoz.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „INP (Interaction to Next Paint)”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása