Modelowane listy odbiorców nie zawierają konkretnych osób, tylko prawdopodobieństwa. Wyjaśniam, jak powstają, gdzie ich szukać w panelu i jak czytać ich raporty.
Zmiana metryki w Core Web Vitals brzmi jak temat dla programistów, ale konsekwencje spadają na osoby odpowiadające za widoczność. Google zapowiedział ją z rocznym wyprzedzeniem i termin wypada w połowie marca 2024 — czyli za sześć tygodni.
Dla części stron będzie to zmiana kosmetyczna. Dla stron zbudowanych na rozbudowanym motywie, z kreatorem układu, kilkoma wtyczkami sklepowymi i kompletem skryptów marketingowych, może oznaczać wyjście ze strefy „dobrze” tego samego dnia, bez żadnej zmiany w kodzie. Nie dlatego, że strona się pogorszyła, ale dlatego, że nowa metryka mierzy coś, czego stara praktycznie nie zauważała.
Ten tekst jest o przygotowaniu, nie o definicjach. Kolejność, którą opisuję, wynika z prostej obserwacji: pierwsze dwa kroki są diagnostyczne i darmowe, a bez nich każda decyzja o optymalizacji jest zgadywaniem, na co wydać budżet programistyczny.
Stara metryka responsywności mierzyła pierwszą interakcję i tylko jej opóźnienie wejściowe — czyli czas od kliknięcia do momentu, w którym przeglądarka zaczęła obsługiwać zdarzenie. Nie mierzyła tego, jak długo trwało samo wykonanie kodu ani kiedy użytkownik zobaczył efekt.
Skutek był taki, że strona mogła mieć wynik podręcznikowy i jednocześnie sprawiać wrażenie zawieszonej. Klasyczny przykład: pierwsze kliknięcie w banerze zgody trafia w moment, w którym wątek jest jeszcze wolny, więc metryka notuje kilka milisekund. Trzy kliknięcia później, gdy działa już kod filtrów, dodawania do koszyka i trzy narzędzia analityczne, reakcja przychodzi po pół sekundy — ale tego stara metryka nie widziała.
Nowa metryka mierzy wszystkie interakcje na stronie i całą ich długość: od kliknięcia, przez wykonanie kodu, do wyrenderowania kolejnej klatki. Innymi słowy — mierzy to, co użytkownik faktycznie odczuwa.
Dlatego traktuję tę zmianę nie jako nowy wymóg do odhaczenia, a jako pierwszy moment, w którym raport Google zaczyna zgadzać się z tym, co widać na telefonie. Wcześniej można było mieć zieloną kartę i wściekłego użytkownika.
Zanim cokolwiek zmienisz, potrzebujesz punktu odniesienia — i musi on pochodzić od prawdziwych użytkowników, nie z testu na Twoim laptopie.
Najprostsze źródło to raport publiczny zbierany przez Chrome i wystawiony w narzędziach do badania szybkości stron. Nowa metryka jest tam raportowana od miesięcy, obok starej, więc możesz sprawdzić swoją wartość dzisiaj, bez czekania na marzec. To robię zawsze na pierwszym spotkaniu na ten temat — zajmuje dwie minuty i od razu porządkuje rozmowę.
Trzy rzeczy, na które zwracam uwagę przy odczycie. Po pierwsze, rozdzielenie na urządzenia mobilne i komputery — różnica bywa dramatyczna i prawie zawsze problem jest na telefonach. Po drugie, poziom danych: dla mniejszych witryn dane zbiorcze mogą być dostępne tylko dla całej domeny, nie dla pojedynczych adresów. Po trzecie, okno pomiaru — raport pokazuje dane z ostatnich kilku tygodni, więc efekt poprawek zobaczysz z opóźnieniem i nie ma sensu odświeżać go codziennie.
Do tego zaglądam do raportu podstawowych wskaźników internetowych w Search Console. W tej chwili opiera się on jeszcze na starej metryce, a Google zapowiedział przełączenie razem ze zmianą — więc nie zdziw się skokiem liczby adresów wymagających poprawy w marcu. Lepiej mieć wcześniej własny pomiar, żeby wiedzieć, czy skok oznacza pogorszenie strony, czy tylko zmianę linijki.
Wartość zbiorcza mówi, że jest problem. Nie mówi, gdzie. Do tego potrzebne są dwa narzędzia.
Pierwsze to biblioteka pomiarowa Google dostępna w wersji z dodatkową atrybucją. Wpięta w stronę potrafi zaraportować nie tylko liczbę, ale też element, w który kliknięto, oraz rozbicie czasu na części składowe. Wyniki wysyłam do GA4 jako zdarzenie z parametrami i po tygodniu mam listę elementów interfejsu posortowaną po tym, jak długo każe użytkownikowi czekać. To najbardziej wartościowe dane w całym procesie, bo zamieniają dyskusję o „wolnej stronie” na listę konkretnych przycisków.
Drugie to narzędzia programisty w przeglądarce. W panelu wydajności, po włączeniu spowolnienia procesora do poziomu odpowiadającego przeciętnemu telefonowi, nagrywam scenariusze: otwarcie menu, kliknięcie w filtr, dodanie produktu do koszyka, wysłanie formularza. Szukam długich zadań blokujących wątek główny i sprawdzam, co je wywołuje.
Ważne zastrzeżenie metodyczne: testuję na sprzęcie i łączu podobnym do tego, którym dysponują użytkownicy. Na komputerze z szybkim procesorem prawie każda strona reaguje natychmiast, a to najczęstsza przyczyna wniosku „u nas wszystko działa dobrze”.
Statystycznie największe zyski przy najmniejszym nakładzie leżą tutaj, więc zaczynam od tego, mimo że to najmniej ambitna część pracy.
Każdy z tych elementów ma właściciela w firmie i to zwykle nie jest programista. Dlatego traktuję ten krok jako rozmowę o priorytetach: co naprawdę jest używane, a co zostało włączone „na próbę” dwa lata temu.
Jeśli po uporządkowaniu skryptów zewnętrznych wynik nadal jest słaby, problem leży w kodzie strony i wchodzi programista. Warto wtedy wiedzieć, o co prosić.
Podstawowa technika to rozbijanie długich zadań na krótsze i oddawanie kontroli przeglądarce pomiędzy nimi. Zamiast jednej funkcji przetwarzającej sto elementów listy w jednym przebiegu — kilka mniejszych porcji z przerwami, w których przeglądarka może narysować klatkę. Klasycznie robi się to przez oddanie sterowania w kolejce zadań; w Chrome trwają też prace nad dedykowanym mechanizmem oddawania kontroli, ale w styczniu 2024 traktuję go jako eksperyment, nie jako rozwiązanie do wdrożenia na produkcji.
Druga technika to rozdzielenie reakcji od obliczeń. Kliknięcie powinno natychmiast pokazać efekt wizualny — zmianę stanu przycisku, wskaźnik ładowania — a cięższą pracę wykonać po wyrenderowaniu klatki. Użytkownik ocenia responsywność po tym, czy interfejs zareagował, nie po tym, czy operacja się skończyła.
Trzecia to zwykła higiena: ograniczanie liczby nasłuchów zdarzeń, unikanie kodu odpalanego przy każdym przewinięciu, przenoszenie ciężkich obliczeń do wątku roboczego. W sklepach na popularnych platformach źródłem długich zadań są zwykle filtry katalogu i podliczanie koszyka.
Ostatnia kategoria bywa pomijana, bo nie kojarzy się z szybkością reakcji, a potrafi decydować o połowie wyniku.
Rozmiar drzewa dokumentu ma bezpośredni wpływ na czas renderowania kolejnej klatki. Strona z kilkudziesięcioma tysiącami elementów będzie reagować leniwie nawet przy lekkim kodzie, bo sam układ i przemalowanie trwają długo. To typowa cecha katalogów wyświetlających kilkaset produktów naraz i stron budowanych kreatorem, w którym każda sekcja opakowana jest w kilka dodatkowych kontenerów.
Drugi element to kosztowne przeliczanie układu wywoływane przez animacje i style. Animowanie właściwości wpływających na układ zamiast tych obsługiwanych przez kompozytor to najczęstszy błąd. Pomaga też odcięcie renderowania fragmentów niewidocznych na ekranie.
Trzeci to obrazy i osadzone ramki — mapy, filmy, widgety opinii. Nie wpływają na czas reakcji bezpośrednio, ale konkurują o te same zasoby w krytycznym momencie, więc leniwe ładowanie tego, co jest poza ekranem, poprawia sytuację przy każdej interakcji w pierwszych sekundach wizyty.
Plan, który proponuję klientom na najbliższe tygodnie, wygląda tak: tydzień na pomiar i wpięcie biblioteki z atrybucją, tydzień na przegląd skryptów zewnętrznych i decyzje właścicielskie, dwa–trzy tygodnie na poprawki w kodzie, reszta na weryfikację.
Trzy rzeczy, na które warto się przygotować mentalnie.
Po pierwsze, efekt w raportach zobaczysz z opóźnieniem, bo dane z pola mają swoje okno i wchodzą do statystyk stopniowo. Nie da się wdrożyć poprawki w piątek i sprawdzić wyniku w poniedziałek.
Po drugie, sama zmiana metryki nie przemebluje wyników wyszukiwania. Doświadczenie na stronie jest jednym z wielu czynników i słabsza responsywność nie skasuje dobrego dopasowania treści do zapytania. Argumentu „poprawimy INP i wskoczymy na pierwsze miejsce” nie używam i odradzam wierzenie w niego.
Po trzecie, to nie jest projekt jednorazowy. Każda nowa wtyczka i każdy nowy skrypt marketingowy dodaje pracy wątkowi głównemu, więc bez sprawdzania przy kolejnych wdrożeniach wynik po pół roku wróci do punktu wyjścia. U klientów, u których to działa, pomiar responsywności jest po prostu punktem na liście kontrolnej przed każdą publikacją zmian na stronie.
Używamy plików cookies, aby ułatwić Ci nawigację oraz wykonywanie określonych funkcji. Szczegółowe informacje o wszystkich plikach cookies znajdziesz w każdej kategorii zgody poniżej.
Pliki cookies oznaczone jako "Niezbędne" są przechowywane w Twojej przeglądarce, ponieważ są one kluczowe dla zapewnienia podstawowych funkcji strony.
Używamy również plików cookies firm trzecich, które pomagają nam analizować, w jaki sposób korzystasz z tej strony, zapamiętują Twoje preferencje oraz dostarczają treści i reklamy odpowiednie dla Ciebie. Te pliki cookies będą przechowywane w Twojej przeglądarce tylko za Twoją uprzednią zgodą.
Możesz zdecydować, czy chcesz włączyć lub wyłączyć niektóre bądź wszystkie te pliki cookies, jednak wyłączenie niektórych z nich może wpłynąć na Twoje doświadczenia podczas przeglądania strony.
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __cf_bm | 13 minutes | Cloudflare bot management — distinguishes humans from bots. |
| rc::* | Persistent | Google reCAPTCHA — localStorage holding anti-bot challenge state. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| wpEmojiSettingsSupports | Session | WordPress — sessionStorage flag caching whether the browser can render emoji (feature detection). |
| ytidb* | Persistent | YouTube — IndexedDB storing playback/search state for embedded videos. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| _ga_* | 400 days | Google Analytics 4 — persists session state per property. |
| _ga | 400 days | Google Analytics — distinguishes unique users via a client id. |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| NID | 183 days | Google — stores preferences for personalized ads. |
| fr | 90 days | Meta — encrypted Facebook id and browser id for ads. |
| _gcl_au | 90 days | Google AdSense/Ads — experiments with advertising efficiency (conversion linker). |
| Cookie | Czas przechowywania | Opis |
|---|---|---|
| __Secure-YNID | 180 days | |
| YSC | Session | |
| __Secure-ROLLOUT_TOKEN | 180 days | |
| VISITOR_INFO1_LIVE | 180 days | |
| VISITOR_PRIVACY_METADATA | 180 days | |
| datr | 400 days | |
| sb | 400 days | |
| wd | 7 days |