
Szybkość to nie jest wyścig o cyferki. To realny wpływ na porzucenia i sprzedaż. Każda dodatkowa sekunda ładowania zwiększa ryzyko rezygnacji, a wolne interakcje frustrują użytkownika jeszcze bardziej niż długie wczytywanie. Dobra optymalizacja łączy trzy cele: krótszy czas do „pierwszego wrażenia” (Largest Contentful Paint), stabilny układ (CLS) i płynne działanie po kliknięciu (Interaction to Next Paint). Efekt uboczny: zwykle rośnie też widoczność w wynikach wyszukiwania.
Lighthouse to test „tu i teraz” w warunkach symulowanych. Wynik bywa zmienny, ale świetnie wskazuje, co poprawić. Core Web Vitals to zbiory prawdziwych danych od użytkowników (RUM), które liczą się dla algorytmów wyszukiwarki. Twoim celem jest zielona strefa w Vitalsach i stabilny wynik Lighthouse, a nie jednorazowe 100/100 „na sucho”.
Największe zyski robi nie „magia”, tylko porządek. Ułóż stronę tak, by na górze zawsze stały: logo, nagłówek H1/Hero, krótki lead i kluczowe wezwanie do działania. Poniżej – treść właściwa i dopiero na końcu dodatki (widgety społecznościowe, opinie z zewnętrznych skryptów). Dzięki temu przeglądarka skupia się najpierw na tym, co użytkownik ma zobaczyć i kliknąć.
Obrazy są najcięższym elementem większości stron. Minimalny standard to formaty nowej generacji (AVIF/WEBP), realistyczne wymiary (640–1920 px dla treści, miniatury rzeczywiście małe), lazy loading dla zdjęć poza ekranem oraz atrybuty szerokości i wysokości, żeby układ nie skakał. Ikony i proste grafiki konwertuj do SVG – będą ostre i lekkie.
Ładowanie fontów potrafi zatrzymać malowanie treści. Używaj wariantów zmiennych (variable fonts) zamiast pięciu osobnych. Włącz font-display: swap, żeby tekst był widoczny natychmiast, a ładniejsza czcionka „wskoczyła” później. Zostaw maksymalnie 2 rodziny i 2–3 grubości – reszta to zbędny ciężar.
Kaskadowe arkusze stylów dziel na „krytyczne” (do above the fold) i resztę ładowaną asynchronicznie. Skrypty, których nie potrzebujesz do pierwszego ekranu, ładuj z atrybutami defer lub po interakcji. Każda wtyczka i każdy piksel śledzący mają swój koszt – zostaw tylko to, co faktycznie używasz i mierz. Zamiast biblioteki 300 kB dla jednego efektu lepiej skorzystać z natywnego API przeglądarek.
Skoki treści po załadowaniu to najczęstszy powód niechęci do czytania. Dodaj atrybuty rozmiaru do obrazów i ramek osadzonych (np. wideo), zarezerwuj przestrzeń na reklamy i elementy „sticky”, a lazy load ustaw tak, by nie wpychał nagle dużych komponentów nad właśnie czytany akapit.
Użytkownik cierpliwiej zniesie pół sekundy na start niż opóźnienie po kliknięciu. Minimalizuj koszt obsługi zdarzeń (krótkie funkcje, przemyślane delegowanie), nie blokuj wątku głównego ciężkimi obliczeniami (wynieś je do Web Workers), a komponenty „leniwe” (np. rozbudowane moduły) doczytuj dopiero wtedy, gdy są naprawdę potrzebne.
Narzędzia trzecie potrafią pożreć wynik Lighthouse. Wczytuj je warunkowo: dopiero po akceptacji zgód lub po interakcji („pokaż czat”). Używaj jednego systemu analityki zdarzeń zamiast trzech. Jeśli musisz dodać mapę cieplną, włącz ją na część ruchu i tylko na wybranych podstronach, a nie globalnie.
Mapa witryny, dane strukturalne i logiczne nagłówki nie spowalniają strony, o ile nie są generowane przez ciężkie wtyczki. Pilnuj schludnych adresów URL, sensownego cache’owania i kompresji. Zadbaj o metadane obrazów (rozmiary, alt) – to pomaga i szybkości, i dostępności.
Dobrze oznaczony semantycznie HTML przetwarza się szybciej i czytelniej. Nagłówki H1–H2–H3 budują strukturę, a przyciski i linki z jasnym opisem poprawiają nawigację po klawiaturze i czytnikach ekranu. Tekst zamiast obrazka z tekstem ładuje się szybciej i jest indeksowalny.
0–30 dni: inwentaryzacja zasobów (lista skryptów, czcionek, obrazów), porządki w nagłówku strony (kolejność i tryb ładowania), wdrożenie nowoczesnych formatów obrazów i lazy load, ograniczenie wtyczek i pikseli do „must have”. Pierwszy cel: LCP < 2,5 s na kluczowych podstronach.
31–60 dni: krytyczny CSS i asynchroniczne ładowanie reszty, redukcja i „odchudzenie” JS, rezerwacje miejsca na elementy powodujące CLS, optymalizacja czcionek (subsety, swap). Cel: CLS < 0,1 i stabilny wynik Lighthouse > 85 na mobile.
61–90 dni: optymalizacja interakcji (INP < 200 ms): delegowanie zdarzeń, rozbicie ciężkich modułów, ewentualne Web Workers. Włączenie monitoringu RUM (prawdziwi użytkownicy), testy A/B wariantów wagi strony vs. konwersja. Cel: zielone Core Web Vitals dla 75. percentyla.
Nie chowaj ważnych treści za „późniejszym ładowaniem”. Przyciski i formularze muszą być klikalne natychmiast, nawet jeśli reszta jeszcze się doczytuje. Nie zamieniaj wszystkich zdjęć na „ziarniste” miniatury – pierwszy ekran powinien wyglądać dobrze. Zawsze sprawdzaj, czy zmiana poprawiła nie tylko metryki techniczne, ale też czas na stronie i współczynnik konwersji.
Przeładowane nagłówki. Zbyt wiele skryptów blokujących – przełącz na defer, usuń duplikaty, łącz pliki tam, gdzie to sensowne.
Ogromne zdjęcia w miniaturach. Generuj warianty wielkości i użyj atrybutu srcset z sizes, aby przeglądarka wybrała właściwy rozmiar.
Zbyt wiele czcionek. Ogranicz do 2 rodzin, 2–3 grubości. Rozważ lokalne hostowanie i subsetting znaków.
„Magiczne” wtyczki do szybkości. Najpierw porządki, dopiero potem narzędzia pomocnicze. Automaty potrafią ukryć przyczynę problemu.
Ignorowanie INP. Skupienie wyłącznie na pierwszym wczytaniu, a interakcje „lagują”. Zmniejsz koszt JS, skróć obsługę zdarzeń.
Nawet w „cięższym” CMS-ie da się osiągnąć świetne wyniki, jeśli trzymasz dyscyplinę: sensowne szablony, porządek w wtyczkach, kompresja i cache po stronie serwera/CDN, ograniczenie inline’owych skryptów z treści. To proces, a nie jednorazowa akcja.
Szybka strona to efekt szeregu małych decyzji: porządek w nagłówku, lekkie obrazy, skrypty ładowane wtedy, kiedy naprawdę są potrzebne, stabilny układ i krótkie reakcje po kliknięciu. Z planem 30–60–90 dni dojdziesz do 90+ w Lighthouse bez poświęcania treści i konwersji. Mierz prawdziwych użytkowników, nie poluj na idealny test „laboratoryjny” – i utrzymuj porządek przy każdej publikacji.