AĄBCĆDEĘFGHIJKLŁMNŃOÓPQRSŚTUVWXYZŹŻ
Wydajność

Interaction to Next Paint (INP)

Opublikowano: · Aktualizacja:

Interaction to Next Paint (INP) mierzy responsywność strony: czas od interakcji użytkownika (kliknięcia, dotknięcia lub naciśnięcia klawisza) do następnego odmalowania ekranu, w którym widać efekt tej interakcji. Wynik strony to zbliżone do najgorszego opóźnienie zaobserwowane podczas całej wizyty.

W marcu 2024 INP zastąpił First Input Delay (FID) jako metryka Core Web Vitals, bo mierzy pełny koszt obsługi interakcji, a nie tylko opóźnienie jej rozpoczęcia. Dobry wynik to maksymalnie 200 ms na 75. percentylu.

Trzy fazy każdej interakcji

  • Opóźnienie wejścia — czekanie, aż główny wątek będzie wolny, by uruchomić handler.
  • Czas przetwarzania — wykonanie kodu obsługującego zdarzenie.
  • Opóźnienie prezentacji — przeliczenie layoutu i odmalowanie kolejnej klatki.

Jak poprawić INP

Kluczem jest odciążenie głównego wątku: dzielenie długich zadań (yielding), redukcja i odroczenie JavaScriptu, unikanie nadmiarowych re-renderów oraz ograniczenie kosztownych operacji na DOM w handlerach zdarzeń.

Przykład

Ciężka operacja synchroniczna w handlerze kliknięcia blokuje główny wątek i opóźnia kolejne odmalowanie. Dzielenie pracy na mniejsze porcje (yield) pozwala przeglądarce zareagować szybciej.

Pogarsza INP — synchroniczna pętla w handlerze
JavaScript
button.addEventListener('click', () => {
  for (let i = 0; i < 50000; i++) {
    processItem(items[i]); // blokuje główny wątek
  }
  updateUI();
});
Lepsze — dzielenie zadania (yield)
JavaScript
button.addEventListener('click', async () => {
  for (let i = 0; i < items.length; i++) {
    processItem(items[i]);
    if (i % 100 === 0) await new Promise(requestAnimationFrame);
  }
  updateUI();
});

Źródła i dalsza lektura

Sprawdź wydajność swojej strony

Insight mierzy Core Web Vitals i porządkuje wąskie gardła według wpływu.

Bez karty kredytowej Raport z datą i źródłami Bez zakładania konta