Masz wolno ładującą się stronę WordPress? Widzisz wysokie współczynniki odrzuceń w Google Analytics? Słyszałeś o Core Web Vitals, ale nie wiesz, od czego zacząć?
Ten przewodnik to wszystko, czego potrzebujesz, żeby skutecznie przyspieszyć swoją stronę WordPress. Pokażę Ci sprawdzone techniki, które sam stosuję w projektach klientów. Niektóre z nich to rozwiązania, o których większość osób nawet nie wspomina.
Przygotuj się na konkretną dawkę wiedzy z prawdziwego zdarzenia. Jak zawsze zachęcam Cię do zaobserwowania BezLaga na FB – żeby nigdy nie przegapić darmowej wiedzy, która wyróżni Twoją stronę na tle konkurencji.
Jeżeli nie masz czasu przeczytać artykułu, lub po prostu wolisz słuchać – mam dla Ciebie niespodziankę. Na podstawie tego artykułu, Sztuczna Inteligencja przygotowała podcast. To całkiem ciekawa i skuteczna forma przyswajania nowej wiedzy. Miłego słuchania 🙂
Dlaczego szybkość ładowania ma kluczowe znaczenie w 2025 roku?

Według badań Google, połowa użytkowników porzuca stronę, która ładuje się dłużej niż 3 sekundy. Każda dodatkowa sekunda opóźnienia może kosztować Cię:
- Utratę potencjalnych klientów
- Niższe pozycje w wyszukiwarce
- Spadek konwersji nawet o 7%
Szybkość strony wpływa na trzy fundamentalne obszary Twojego biznesu online:
SEO i widoczność w Google
Core Web Vitals są oficjalnym czynnikiem rankingowym Google. Strony wolno ładujące się tracą pozycje na rzecz szybszej konkurencji.
Doświadczenie Użytkownika (UX)
Użytkownicy oczekują natychmiastowego ładowania. Opóźnienie przekraczające 3 sekundy drastycznie zwiększa współczynnik odrzuceń. Ludzie po prostu wracają do Google i klikają w kolejny wynik.
Konwersja i przychody
Badania pokazują, że poprawa czasu ładowania o 1 sekundę może zwiększyć konwersję nawet o 7%. Jeśli prowadzisz sklep internetowy, to bezpośrednio przekłada się na Twoje przychody.
Przekonałem Cię? Świetnie. Czas na konkretne działanie.
Core Web Vitals – Metryki, które musisz znać (i naprawić)

Google wprowadziło Core Web Vitals jako zestaw metryk mierzących rzeczywiste doświadczenie użytkownika. To nie są abstrakcyjne liczby – to konkrety, które decydują o Twoich pozycjach.
1. LCP (Largest Contentful Paint) – Szybkość ładowania głównej treści
LCP mierzy czas, w którym największy element treści (zazwyczaj obrazek lub blok tekstu) staje się widoczny w oknie przeglądarki.
Zalecany wynik: poniżej 2,5 sekundy
Jak zatem poprawić LCP?
Preload LCP image (największy obrazek)
To jedna z najprostszych i najskuteczniejszych optymalizacji. Jeśli masz duży obraz hero na górze strony, powiedz przeglądarce, żeby pobierała go natychmiast:
<link rel="preload" as="image" href="/images/hero.jpg">
Efekt: Może zredukować LCP nawet o 100-500ms. To ogromna różnica!
Optymalizacja czcionek i obrazów
O tym będzie osobna sekcja, ale zapamiętaj: duże, nieoptymalizowane obrazy to wróg numer jeden dla LCP. Konwertuj obrazy do WebP lub AVIF, żeby zmniejszyć ich rozmiar bez znacznej utraty jakości.
Edge Caching
Edge cache to game changer, o którym prawie nikt nie mówi. Standardowe cache przechowuje kopię strony na Twoim serwerze. Edge cache przechowuje ją na setkach serwerów na całym świecie i trafia do użytkownika z najbliższego serwera.
Różnica? Użytkownik z Australii wchodząc na stronę bezlaga.pl (która wykorzystuje edge cache) pobiera stronę z serwera w Sydney, zamiast w Warszawie. To realnie przyspiesza ładowanie o cenne sekundy.
Szybki hosting z NVMe i LiteSpeed
Najlepsza optymalizacja za dużo nie pomoże, jeśli Twój hosting jest zbyt wolny. Wybierając hosting, kieruj się przede wszystkim:
- LiteSpeed Web Server (do 75x szybszy od Apache)
- Dyski NVMe (3000-7000 MB/s vs 500 MB/s SATA SSD)
- Redis (cache obiektowy w pamięci RAM)
Polecane hostingi w Polsce:
- SEOHOST (od 37 zł/rok, NVMe + Redis + LiteSpeed) – mój faworyt dla większości projektów
- Hostinguj.pl (świetne wsparcie techniczne)
- Cyberfolks
2. INP (Interaction to Next Paint) – Responsywność interakcji
Co to jest? INP zastąpił FID – mierzy czas reakcji strony na interakcje użytkownika (kliknięcia, dotknięcia). To w praktyce sprawdzian tego, jak responsywna jest Twoja strona.
Zalecany wynik: poniżej 200ms
Jak poprawić INP:
Optymalizacja JavaScript (defer, delay)
JavaScript to najczęstsza przyczyna wolnych interakcji. Rozwiązanie? Defer i delay, czyli dwie techniki, które drastycznie poprawiają INP.
Do tematu delay i defer wrócę jeszcze w osobnej sekcji – to najpotężniejsza technika optymalizacji z całego tego artykułu, ale wymaga dokładnego wytłumaczenia, bo źle skonfigurowana może zepsuć funkcjonalność strony.
Defer – pobiera skrypt w tle, wykonuje go dopiero po załadowaniu HTML:
<script defer src="/js/analytics.js"></script>
Efekt: Skrypt nie blokuje renderowania strony. HTML ładuje się najpierw, skrypty wykonują się później.
Delay (opóźnione ładowanie) – jeszcze potężniejsza technika, która potrafi też namieszać. Skrypty są całkowicie zablokowane do momentu pierwszej interakcji użytkownika (kliknięcie, scroll, dotknięcie, ruch myszką).
Kiedy używać którego?
- Defer – dla skryptów potrzebnych do funkcjonalności strony (slider, menu mobile, formularze)
- Delay – dla wszystkich niepotrzebnych na starcie skryptów
Implementacja:
Ręczna implementacja JS delay jest skomplikowana, ale na szczęście wtyczki robią to automatycznie:
- FlyingPress – opcja “Delay JavaScript” + możliwość wykluczenia konkretnych skryptów
- WP Rocket – opcja “Load JavaScript deferred” + “Delay JavaScript execution”
- Perfmatters – opcja “Delay JS”
Uwaga: Po włączeniu delay zawsze dokładnie przetestuj stronę. Niektóre funkcje mogą przestać działać do pierwszej interakcji (np. animacje, slidery) lub całkowicie. W takim przypadku dodaj odpowiednie skrypty do listy wykluczeń.
Redukcja Ciężkich Skryptów
Każda wtyczka WordPress dodaje swoje skrypty. Problem? Większość z nich ładuje się na WSZYSTKICH stronach, nawet tam, gdzie nie są potrzebne.
Rozwiązanie: Asset CleanUp Pro (o tym później)
3. CLS (Cumulative Layout Shift) – Stabilność wizualna
CLS mierzy niespodziewane przesunięcia elementów podczas ładowania strony. Czy kiedykolwiek chciałeś kliknąć w przycisk, a nagle pojawił się baner i kliknąłeś w reklamę? To właśnie CLS. Ciekawym jest, że ta metryka potrafi drastycznie obniżyć wynik PageSpeed Index – nawet jeżeli FCP i LCP są wzorowe.
Zalecany wynik: poniżej 0,1
Jak poprawić CLS:
Określanie Wymiarów Obrazów (width, height)
To jest podstawa. Zawsze dodawaj atrybuty width i height do obrazów:
<img src="photo.jpg" width="800" height="600" alt="Opis">
Dzięki temu przeglądarka wie, ile miejsca zarezerwować, zanim obrazek się załaduje.
Font-display: swap dla Czcionek
Domyślnie przeglądarki czekają na załadowanie czcionki, zanim pokażą tekst (FOIT – Flash of Invisible Text). To zwiększa CLS i denerwuje użytkowników.
Rozwiązanie:
@font-face {
font-family: 'MyFont';
src: url('/fonts/font.woff2') format('woff2');
font-display: swap;
}
Efekt: Tekst wyświetla się natychmiast z czcionką systemową, a po załadowaniu następuje podmiana. Sprytne, co?
Rezerwowanie Miejsca na Dynamiczne Treści
Jeśli masz dynamicznie ładowane elementy (np. reklamy, widgety social media), zarezerwuj dla nich miejsce z góry używając min-height w CSS. Proste, a działa.
Narzędzia pomiarowe: Lab data, RUM i CrUX – Co wybrać?

Zanim zaczniesz optymalizować, musisz wiedzieć, co mierzyć. Są trzy rodzaje narzędzi do pomiaru wydajności, każde ma inne zastosowanie.
Testy laboratoryjne (Lab Data) – Symulowane ładowanie
Lab Data to narzędzia, które symulują ładowanie Twojej strony w kontrolowanych warunkach. To trochę jak test crash w samochodzie – powtarzalny, kontrolowany, ale nie pokazuje, jak auto zachowuje się w prawdziwym ruchu.
PageSpeed Insights (PSI)
To darmowe narzędzie od Google, które testuje stronę na serwerach Google i pokazuje Core Web Vitals.
Dostępne pod: https://pagespeed.web.dev/
Co pokazuje:
- Wynik wydajności (0-100 punktów)
- Core Web Vitals (LCP, INP, CLS)
- Szczegółowe rekomendacje co poprawić
- Dwa rodzaje danych: Lab Data (symulacja) + Field Data (CrUX – prawdziwi użytkownicy)
Kiedy używać: Do szybkiej diagnozy i sprawdzenia Core Web Vitals. To powinno być Twoje narzędzie numer jeden.
GTmetrix
To zaawansowane narzędzie analityczne z waterfall chart i szczegółowymi raportami.
Dostępne pod: https://gtmetrix.com/
Co pokazuje:
- Wynik wydajności (używa Lighthouse pod spodem)
- Waterfall chart – wizualizacja kolejności ładowania każdego zasobu
- Wielkość strony w MB
- Liczba zapytań HTTP
- Filmik z ładowaniem strony
- Możliwość testowania z różnych lokalizacji (plan płatny)
Kiedy używać: Gdy chcesz dokładnie zdiagnozować, co spowalnia stronę. Waterfall pokazuje wąskie gardła, których nie zobaczysz w PageSpeed Insights.
WebPageTest
Co to jest: Najbardziej zaawansowane darmowe narzędzie do testowania wydajności.
Dostępne pod: https://www.webpagetest.org/
Co pokazuje:
- Filmik z ładowaniem strony (frame by frame)
- Waterfall
- Testy z różnych lokalizacji na świecie
- Różne przeglądarki i urządzenia
- Connection throttling (symulacja wolnego internetu)
Kiedy używać: Do bardzo zaawansowanych testów. Jeśli chcesz zobaczyć, jak strona zachowuje się na wolnym smartfonie w Indiach – wybierz WebPageTest.
Dane rzeczywiste (Field data) – Prawdziwi użytkownicy
Field Data to dane zbierane od prawdziwych użytkowników odwiedzających Twoją stronę. To pokazuje, jak strona faktycznie działa w realnym świecie (i to właśnie te prawdziwe dane wpływają najbardziej na pozycjonowanie).
Chrome User Experience Report (CrUX)
CrUX to oficjalna baza danych Google zbierająca rzeczywiste doświadczenia użytkowników Chrome. To już nie symulacja, tylko prawdziwe dane z prawdziwych odwiedzin na Twojej stronie. To właśnie te dane wpływają na pozycje w Google. Jeśli CrUX pokazuje, że Twoja strona jest wolna dla użytkowników, Google to widzi i może obniżyć Twoje pozycje.
Możesz sprawdzić swoje dane CrUX w trzech miejscach:
- PageSpeed Insights (sekcja “Field Data” u góry)
- Google Search Console → Podstawowe wskaźniki internetowe
- CrUX Dashboard (bardziej zaawansowany widok)
Ale jest haczyk. CrUX zbiera dane tylko z przeglądarki Chrome, więc nie zobaczysz, jak strona działa na Safari, Firefox czy innych przeglądarkach. Dodatkowo dane są opóźnione o około miesiąc – widzisz historię z ostatnich 28 dni. To znaczy, że jeśli dziś zoptymalizujesz stronę, efekty w CrUX zobaczysz dopiero za miesiąc.
Jeszcze jedna rzecz. jeśli masz małą stronę z niewielkim ruchem, Google może w ogóle nie publikować Twoich danych CrUX. Potrzebujesz sporo odwiedzin, żeby dane się pojawiły.
Real User Monitoring (RUM)
RUM to krok dalej. Zamiast czekać na dane Google, sam zbierasz dane ze wszystkich przeglądarek w czasie rzeczywistym. Instalujesz mały skrypt na stronie, który mierzy wydajność dla każdego użytkownika, niezależnie czy używa Chrome, Safari, Firefox czy czegokolwiek innego.
Największą zaletą jest to, że widzisz wyniki natychmiast. Plus możesz segmentować dane – sprawdzić jak strona działa dla użytkowników z iOS, z Polski, na wolnym połączeniu 3G, itp. To daje pełny obraz tego, co się faktycznie dzieje.
Popularne narzędzia RUM to Request Metrics, SpeedCurve, Calibre czy New Relic. Ceny zaczynają się od około $20/miesiąc, więc to nie jest darmowe jak CrUX, ale jeśli prowadzisz e-commerce czy większy projekt – warto zainwestować.
Kiedy używać RUM? Gdy chcesz dokładnie zrozumieć, jak strona działa dla wszystkich użytkowników. Jeśli widzisz w CrUX słabe wyniki, ale nie wiesz dlaczego – RUM pokaże Ci, że np. użytkownicy z iOS mają problem, albo że konkretna przeglądarka wolno ładuje Twoje skrypty.
Trochę więcej o hostingu – Wybór i konfiguracja

Kluczowe technologie hostingu w 2025 roku
LiteSpeed Web Server
LiteSpeed to najszybszy serwer HTTP dla WordPress, znacznie przewyższający Apache i Nginx.
Zalety:
- Do 75x szybszy od Apache
- Wbudowane wsparcie dla LSCache (najlepsza wtyczka cache dla WordPress)
- Natywna integracja z WordPress
- Obsługa HTTP/2 i HTTP/3
Dyski NVMe
NVMe to interfejs do dysków SSD, oferujący wielokrotnie wyższą przepustowość niż klasyczne SATA SSD.
Porównanie:
- HDD: 80-160 MB/s (unikaj jak ognia)
- SSD SATA: 500-550 MB/s
- NVMe SSD: 3000-7000 MB/s
Efekt: Szybsze wczytywanie plików WordPress i zapytania do bazy danych. Różnica jest odczuwalna, szczególnie przy większym ruchu.
Redis / Memcached
Redis to system cache obiektowego, który przechowuje wyniki zapytań do bazy danych w pamięci RAM.
Efekt: Redukcja zapytań SQL o 70-90%, drastyczne przyspieszenie dynamicznych stron.
Wyobraź sobie, że zamiast za każdym razem pytać bazę danych “pokaż mi 10 najnowszych artykułów”, Redis pamięta odpowiedź i podaje ją natychmiast z pamięci. To oszczędza milisekundy przy każdym zapytaniu, co ma znaczenie dla e-commerce i dużych portalów.
HTTP/2, HTTP/3 i QUIC
HTTP/2: Multipleksowanie zapytań – wiele plików pobiera się jednocześnie przez jedno połączenie TCP.
HTTP/3 + QUIC: Nowy protokół oparty na UDP zamiast TCP, oferujący:
- Szybsze nawiązywanie połączenia (1-RTT vs 3-RTT w TCP)
- Lepsze radzenie sobie z utratą pakietów
- Niższe opóźnienia na słabych łączach (mobile)
- Zintegrowane TLS 1.3
Efekt: Szybsze ładowanie o 10-30% w porównaniu do HTTP/2 na wolnych połączeniach.
PHP 8.3+ i OPcache
PHP 8.3 oferuje znaczny wzrost wydajności w porównaniu do starszych wersji. Jeśli Twoja strona wciąż używa PHP 7.4 (lub co gorsza, jeszcze starszej wersji), tracisz wydajność i bezpieczeństwo.
OPcache: Mechanizm buforowania skompilowanego kodu PHP w pamięci RAM. Eliminuje ponowną kompilację przy każdym żądaniu.
Jak zaktualizować: Zazwyczaj panel hostingu (cPanel/DirectAdmin) → Wersja PHP → Wybierz 8.3
FlyingPress + FlyingCDN: Optymalizacja All-in-One

Okej, czas na mój osobisty faworyt. FlyingPress to najlepsza wtyczka do optymalizacji WordPress, jaką kiedykolwiek używałem (a używałem ich dziesiątki).
FlyingPress – Najlepsza Wtyczka Cache 2025
Kluczowe funkcje:
- Cache całej strony + automatyczne preloadowanie
- Minifikacja CSS/JS
- Lazy loading obrazów i dużych elementów
- Opóźnienie ładowania CSS
- Delay JavaScript (opóźnione ładowanie JS)
- Optymalizacja czcionek (preload, lokalne hostowanie)
- Czyszczenie bazy danych
- Monitoring szybkości ładowania (trochę jak CrUX czy RUM)
Cena: $59/rok za 1 stronę, $249/rok za nielimitowaną ilość stron.
FlyingCDN – Edge Cache na Cloudflare Enterprise
To jest unikalna usługa, której nie znajdziesz nigdzie indziej. FlyingCDN wykorzystuje infrastrukturę Cloudflare Enterprise (tę samą, z której korzystają najwięksi gracze).
Unikalne cechy (brak w standardowych CDN):
Edge Page Caching
Cache całych stron HTML na serwerach brzegowych (edge). To nie jest zwykłe CDN, które cache’uje tylko obrazy i pliki statyczne.
TTFB < 50ms globalnie: Czas odpowiedzi serwera poniżej 50 milisekund na całym świecie. To oznacza, że użytkownik z Tokio, Sydney czy Nowego Jorku pobiera Twoją stronę tak szybko, jakby serwer był tuż obok niego.
310+ lokalizacji edge w 120+ krajach: Twoja strona jest dosłownie wszędzie.
Automatyczna konwersja WebP
Bez zmiany URL, bez instalacji wtyczki. FlyingCDN automatycznie konwertuje wszystkie obrazy na WebP dla przeglądarek, które to obsługują.
Responsive Images: Adaptywne rozmiary w zależności od urządzenia. Użytkownik na smartfonie dostaje mniejszą wersję obrazka niż ten na monitorze 4K.
Argo Smart Routing + Tiered Cache
Cloudflare automatycznie wybiera najszybszą ścieżkę dostarczania treści. To jak GPS dla ruchu internetowego – omija zatłoczone “drogi”.
Inne funkcje Cloudflare Enterprise
- Cloudflare Polish & Mirage: Zaawansowana optymalizacja obrazów na poziomie edge
- Brotli/Gzip compression: Automatyczna kompresja treści (do 20% mniejsze pliki niż GZIP)
- DDoS protection + firewall: Ochrona przed atakami na poziomie enterprise
Koszt: $10 za 100GB/miesiąc.
Optymalizacja obrazów w WordPress: WebP, AVIF, Lazy Loading

Obrazy to najczęstsza przyczyna wolnego ładowania stron. Optymalizacja grafik może zredukować czas ładowania nawet o 50-70%!
Nowoczesne formaty obrazów
WebP
- 30-50% mniejszy od JPEG przy tej samej jakości
- Szeroka kompatybilność (wszystkie nowoczesne przeglądarki)
- Wsparcie przezroczystości (jak PNG, ale lżejszy)
AVIF
- Jeszcze lepszy niż WebP (dodatkowe 20% oszczędności)
- Nowszy format, ograniczone wsparcie (głównie Chrome, Firefox)
Kiedy używać którego?
- WebP – domyślny wybór dla wszystkich obrazów
- AVIF – jeśli chcesz wycisnąć maksimum i nie przejmujesz się starszymi przeglądarkami
Dobre wtyczki do konwersji:
- Converter for Media (darmowa, świetna)
- Imagify
- ShortPixel
Lazy Loading
Ładowanie tylko obrazów widocznych w oknie przeglądarki redukuje wstępny rozmiar strony nawet o 40-60%. Wyobraź sobie artykuł z 20 zdjęciami. Bez lazy load przeglądarka próbuje załadować wszystkie 20 na raz. Z lazy load tylko te pierwsze 3-4, które widzisz na ekranie. Reszta ładuje się podczas scrollowania.
Implementacja: WordPress 5.5+ ma wbudowany lazy load. Ale wtyczki typu FlyingPress robią to lepiej (z threshold, exclude above the fold, itp.)
Responsywne obrazy (srcset, sizes)
Dostarczanie odpowiednich rozmiarów obrazów w zależności od urządzenia.
<img src="photo-800w.jpg"
srcset="photo-400w.jpg 400w,
photo-800w.jpg 800w,
photo-1200w.jpg 1200w"
sizes="(max-width: 600px) 400px,
(max-width: 1200px) 800px,
1200px"
alt="Opis">
Co to robi? Smartfon z ekranem 375px pobiera wersję 400px, a nie 1200px. To oszczędza transfer i czas ładowania. WordPress ustawia to automatycznie, ale warto sprawdzić czy Twój motyw tego nie blokuje.
CDN dla Obrazów
Dostarczanie obrazów z serwerów najbliższych użytkownikowi – o tym już pisałem przy FlyingCDN.
PS: FlyingCDN konwertuje automatycznie wszystkie obrazy na WebP bez zmiany URL. Nie musisz nic robić, działa “out of the box”.
Optymalizacja Czcionek: WOFF2, Preload, Font-display

Czcionki webowe mogą opóźniać renderowanie tekstu i negatywnie wpływać na LCP i CLS. Większość stron robi to źle.
Problem: Czcionki potrafią ważyć więcej niż cała reszta strony
Widziałem strony, gdzie ktoś załadował 8 wariantów czcionki (Thin, Light, Regular, Medium, SemiBold, Bold, ExtraBold, Black) po 60KB każdy. To 480KB tylko na czcionki. Więcej niż wszystkie (zoptymalizowane) obrazy razem wzięte. W praktyce używane były tylko Regular i Bold.
Jak To Naprawić?
1. Używaj WOFF2 – najnowszy format, 30-50% mniejszy od starszego WOFF i działa w większości nowoczesnych przeglądarek. Skonwertujesz je tutaj: Transfonter, Google Webfonts Helper.
2. Hostuj lokalnie zamiast pobierać czcionki z Google Fonts. Eliminujesz w ten sposób dodatkowe zapytania. Google Webfonts Helper pozwala pobrać kompletne, zoptymalizowane czcionki.
3. Preload najważniejszych czcionek:
<link rel="preload" as="font" type="font/woff2" href="/fonts/roboto.woff2" crossorigin>
Przeglądarka ładuje czcionkę natychmiast. Ale uwaga: Preloaduj tylko najważniejsze 1-2 czcionki w pierwszym widoku, nie wszystkie.
4. Użyj font-display: swap – tekst wyświetla się natychmiast z czcionką systemową, po załadowaniu następuje podmiana. Efekt to zero niewidzialnego tekstu (FOIT).
@font-face {
font-family: 'Roboto';
src: url('/fonts/roboto.woff2') format('woff2');
font-display: swap;
}
5. Subsetting – wytnij niepotrzebne znaki. Jeśli strona jest po polsku, nie potrzebujesz chińskich znaków, cyrylicy czy emoji. Zostaw tylko latin-ext.
6. Ogranicz warianty – w większości przypadków wystarczy waga 400, 600 i 700. Nie ładuj 8 wariantów, jeśli używasz trzech.
7. Variable Fonts – jedna czcionka zawiera wszystkie wagi (100-900). Ma sens, gdy potrzebujesz wielu wariantów.
Ikony: SVG vs Icon Fonts – Które wybrać?

To temat, o którym rzadko się mówi, a ma duży wpływ na wydajność. Większość stron używa ikon Font Awesome, a pełny zestaw potrafi ważyć nawet 400KB! Czy to dobry wybór?
Co to w ogóle jest?
Icon Fonts to czcionki zawierające ikony zamiast liter. Zamiast zobaczyć “A” widzisz ikonkę Facebook. Font Awesome, Material Icons, czy Ionicons działają właśnie tak. Ładujesz plik fontu (jak normalną czcionkę), a potem wstawiasz ikony przez <i class="fa fa-home"></i>.
SVG (Scalable Vector Graphics) to obrazy wektorowe – matematyczne opisy kształtów. Każda ikona to osobny plik lub kod wstawiony bezpośrednio w HTML. Wyglądają ostro w każdym rozmiarze, bo to nie piksele, tylko wzory matematyczne.
Icon Fonts to prawie zawsze zły wybór
Brzmi super w teorii – jeden plik, setki ikon. Problem pojawia się, kiedy używasz 5 ikon, a ładujesz kilkadziesiąt KB. To trochę jak zakup słownika angielsko-polskiego, bo nie znasz jednego słowa.
Większość stron używa raptem 5-15 ikon z Font Awesome. Pełny zestaw może mieć tysiące ikon. Ładujesz więc 99% elementów, których nigdy nie użyjesz. To ogromna strata transferu i czasu ładowania.
Dodatkowo icon fonts mają inne problemy. Są tylko jednokolorowe, więc nie zrobisz wielokolorowej ikony. Czytniki ekranu czasem mają z nimi problem (traktowane jak tekst). Mogą też wyglądać mniej ostro przez antyaliasing tekstowy. A co, jeśli font się nie załaduje? Zobaczysz kwadraciki lub znaki zapytania zamiast ikon.
Jedyny sensowny przypadek to kiedy używasz 50+ ikon i zależy Ci na wygodzie bardziej, niż na wydajności. W 99% przypadków SVG będzie lepsze.
SVG – Nowoczesne rozwiązanie
SVG daje Ci pełną kontrolę. Wielokolorowe ikony? Żaden problem. Animacje? CSS i JavaScript działają bez problemu. Zmiana koloru tylko jednego elementu? Easy. Ostre i wyraźnie? W każdym rozmiarze.
SVG są traktowane jako obrazy, nie tekst, więc mamy już lepszą dostępność. Możesz je skalować bez utraty jakości, bo to matematyka, a nie piksele. I najważniejsze: ładujesz tylko te, których używasz.
Masz 5 ikon? Strona ładuje 5 małych plików SVG, każda po 500B (tak, bajtów – czyli 0,5KB).
Jest jeden minus: jeśli wstawiasz ikony jako SVG inline (bezpośrednio w HTML) i masz ich dużo, kod HTML rośnie. Ale to nadal lepsze niż ładowanie kilku gigantycznych plików icon font.
Delay i Defer JavaScript/CSS – Najpotężniejsza (i najniebezpieczniejsza) optymalizacja

Tak jak obeicałem – wracam do opóźniania JavaScript. Jeśli miałbym wybrać jedną technikę, która daje największy skok w Core Web Vitals – to właśnie delay i defer. Zdarzały się strony, gdzie samo włączenie delay JavaScript podniosło wynik PageSpeed Insights z 50 na 95 punktów. Ale widziałem też strony, które przestały działać po niewłaściwej konfiguracji.
Czym są Defer i Delay?
Defer to odłożenie wykonania skryptu do momentu, gdy HTML się załaduje. Przeglądarka pobiera skrypt w tle, ale nie wykonuje go od razu – czeka aż cała strona się zbuduje.
<script defer src="/js/analytics.js"></script>
Delay to znacznie mocniejsza broń. Skrypty są całkowicie zablokowane do momentu pierwszej interakcji użytkownika (kliknięcie, scroll, dotknięcie, ruch myszką).
Jak to działa:
- Użytkownik wchodzi na stronę
- Strona ładuje się błyskawicznie (bez wykonywania JS)
- Użytkownik scrolluje/klikuje
- Dopiero wtedy skrypty się wykonują
Przykładowy wpływ na Core Web Vitals
LCP (Largest Contentful Paint):
- Defer: poprawa o 200-500ms
- Delay: poprawa o 500-1500ms
Dlaczego tak? Bo JavaScript nie blokuje renderowania głównej treści. Największy obrazek/tekst może się pokazać natychmiast.
INP (Interaction to Next Paint):
- Defer: poprawa o 100-300ms
- Delay: poprawa o 300-800ms
Bez wykonywania JavaScript na starcie, strona jest “lekka” i responsywna. Pierwsza interakcja jest natychmiastowa.
CLS (Cumulative Layout Shift):
- Defer/Delay: może pogorszyć CLS jeśli będzie źle skonfigurowane
Dlaczego? Bo jeśli skrypty ładują dynamiczne elementy (slidery, pop-upy, nawigację), opóźnienie ich wykonania może spowodować przesunięcia layoutu po pierwszej interakcji.
Przykład z życia:
Strona WooCommerce, PageSpeed Insights 63 punkty. Główny problem: 15 plików JavaScript ładowanych na starcie (analytics, Facebook Pixel, chat widget, newsletter popup, slider produktów).
Po włączeniu delay JavaScript:
- FCP spadł z 3.8s do 1.4s (Delay wpływa teżna FCP)
- LCP spadł z 5.9s do 2.7s
- PageSpeed: 63 → 96 punktów
Jeden przełącznik (i kilka ręcznych wykluczeń) = podwojenie wyniku.
Dlaczego to jest niebezpieczne?
Bo nie każdy skrypt może być opóźniony. Niektóre rzeczy muszą działać od razu:
Można śmiało opóźnić:
- Google Analytics, Facebook Pixel, Tag Manager
- Chat-widżety (Tidio, Messenger, Intercom)
- Skrypty Social Mediów (Facebook, Twitter embeds)
- Komentarze
- Reklamy
- Popupy Newsletterów
- Nie-krytryczne animacje
NIE WOLNO opóźniać:
- jQuery (jeśli inne wtyczki/motywy go potrzebują)
- Krytycznych funkcji motywu np. menu (mobile hamburger)
- Niektórych interaktywnych elementów strony (czasem animowane slidery czy przyciski przestają działać).
Co się stanie jeśli opóźnisz zły skrypt?
W najlepszym wypadku: slider nie zadziała do pierwszej interakcji. Menu mobilne nie otworzy się. Przycisk “Dodaj do koszyka” będzie martwy przez 2 sekundy. Użytkownik kliknie, nic się nie stanie, wyjdzie ze strony.
W najgorszym – Niektóre elementy strony przestaną działać w ogóle i spędzisz 4 godziny główkując, jakie wykluczenie zadziała.
Defer vs Delay – Który Wybrać?
Defer = bezpieczniejszy, mniejszy efekt. Dobre na początek, mniejsze ryzyko zepsucia czegoś.
Delay = potężniejszy, większe ryzyko. Używaj gdy znasz swoją stronę i wiesz, które skrypty można opóźnić.
Moja rekomendacja:
- Zacznij od defer dla wszystkich nie-krytycznych skryptów
- Sprawdź PageSpeed – czy wystarczy?
- Jeśli nie, włącz delay dla niekrytycznych skryptów
- Testuj przez tydzień
- Stopniowo dodawaj kolejne skrypty do delay
Defer/Delay dla CSS? Też możliwe!
Podobna koncepcja – krytyczny CSS ładuje się od razu, reszta jest opóźniona.
Critical CSS = style potrzebne dla treści “above the fold” (widocznej bez scrollowania)
Non-critical CSS = style dla stopki, sidebara oraz innych elementów poniżej widoku
FlyingPress/WP Rocket robią to automatycznie:
- Generują critical CSS
- Resztę ładują asynchronicznie
Efekt: LCP i FCP spadają o kolejne setki milisekund.
Ryzyko: Może pojawić się FOUC (Flash of Unstyled Content), czyli krótkie mruganie niewystylowanej treści. Rzadkie, ale się zdarza.
Zaawansowana optymalizacja: Asset CleanUp Pro

Większość wtyczek i motywów ładuje swoje CSS/JS na wszystkich stronach, nawet jeśli nie są tam potrzebne.
Przykład: Wtyczka formularzy kontaktowych ładuje swoje zasoby na każdej stronie, choć formularz jest tylko na jednej. Contact Form 7 waży ~40KB. Jeśli masz 50 stron bez formularza, na każdej z tych stron marnujesz transfer i obniżasz szybkość ładowania.
Asset CleanUp Pro – Precyzyjna kontrola
Asset CleanUp Pro pozwala na wyłączanie poszczególnych plików CSS/JS per strona, post, kategoria lub globalnie.
Użycie:
- Z panelu wp-admin przejdź do wtyczki Asset CleanUp.
- Wybierz „CSS/JS Load Manager” lub podobną zakładkę pokazującą listę wszystkich stron.
- Po wybraniu strony zobaczysz listę załadowanych na niej plików CSS i JS z różnych wtyczek.
- Możesz tu zaznaczyć, które pliki chcesz wyłączyć (unload) z danej strony, aby nie były ładowane gdy nie są potrzebne.
- Po wprowadzeniu zmian zapisz i przetestuj działanie strony, aby upewnić się, że nic nie przestało działać.
Efekt: Redukcja rozmiaru stron, mniej żądań HTTP, szybsze ładowanie.
Alternatywa: Perfmatters (podobna funkcjonalność, też płatna).
Uwaga: Testuj stronę dokładnie po wyłączeniu zasobów. Czasem coś może przestać działać (np. slider, popup), a Ty nie będziesz wiedział co konkretnie spowodowało problemy.
Optymalizacja Bazy Danych WordPress

Baza danych WordPress z czasem zapełnia się niepotrzebnymi danymi, które spowalniają zapytania SQL. To jak szuflada, do której wrzucasz wszystko, aż w końcu nie możesz niczego znaleźć. Brzmi znajomo?
Problemy w Bazie Danych
- Stare rewizje postów (WordPress zapisuje każdą zmianę – po roku masz 50 wersji jednego artykułu)
- Auto-drafts (automatycznie zapisane szkice)
- Spam i usunięte komentarze
- Transient options (dane tymczasowe, które często już nie są potrzebne)
- Osierocone metadane (meta data dla usuniętych postów/użytkowników)
- Tabele po usuniętych wtyczkach
WP-Optimize – Automatyczne czyszczenie
WP-Optimize to najpopularniejsza darmowa wtyczka do optymalizacji bazy danych.
Funkcje:
- Optimize tables – kompaktowanie i defragmentacja tabel w bazie. To działa jak defragmentacja dysku – porządkuje dane, usuwa puste przestrzenie, przyspiesza dostęp do informacji.
- Clean post revisions – usuwa wszystkie stare rewizje postów. Możesz wybrać czy usunąć wszystkie, czy zostawić np. 5 ostatnich rewizji dla każdego wpisu. To często najbardziej zajmujące miejsce śmieci w bazie.
- Clean auto-drafts – wyrzuca automatycznie zapisane szkice, które nigdy nie zostały opublikowane. WordPress zapisuje draft co 60 sekund podczas pisania – większość z nich to niepotrzebne duplikaty.
- Remove spam/trashed comments – usuwa komentarze oznaczone jako spam oraz te w koszu. Jeśli masz dużo ruchu, spam może zajmować dużo miejsca.
- Clean transients – usuwa wygasłe i osierocone opcje tymczasowe. Wtyczki cache, aktualizacje i inne mechanizmy tworzą transients, które powinny wygasać, ale często tego nie robią. Mogą zajmować nawet setki MB.
- Clean orphaned metadata – usuwa metadane bez powiązania z postami, komentarzami czy użytkownikami. Zostają po usuniętych elementach jako śmieci w bazie.
- Zaplanowane czyszczenie – możesz ustawić automatyczne czyszczenie dziennie, tygodniowo lub miesięcznie. Wtyczka zrobi to w tle, nie musisz pamiętać o ręcznej optymalizacji.
Uwaga: Zawsze rób kopię zapasową bazy danych przed optymalizacją. Można coś zepsuć (choć rzadko się to zdarza).
Alternatywy:
- Advanced Database Cleaner (bardziej zaawansowany)
- WP-Sweep (minimalistyczny)
- FlyingPress – jeśli już używasz FlyingPress, ma wbudowaną funkcję czyszczenia bazy danych. Nie musisz instalować osobnej wtyczki
Dodatkowe Optymalizacje

Kompresja GZIP/Brotli
Brotli oferuje lepszą kompresję niż GZIP (o 15-20%).
Jak włączyć:
Większość hostingów ma GZIP włączony domyślnie. Brotli wymaga nowszych wersji Nginx/LiteSpeed.
Wtyczka LiteSpeed Cache włącza kompresję automatycznie, jeżeli strona znajduje się na hostingu LiteSpeed Server.
Browser Caching
Ustawienie nagłówków Expires dla statycznych zasobów (CSS, JS, obrazy) zmniejsza powtórne pobieranie.
Przykład .htaccess (Apache):
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType image/webp "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
Albo po prostu ustaw to we wtyczce cache, jeżeli jest taka możliwość.
Zmniejsz ilość przekierowań
Każde przekierowanie dodatkowo spowalnia wczytanie strony. Wyeliminuj zbędne przekierowania 301/302.
Sprawdź przekierowania tutaj: Redirect Mapper
Zmniejsz rozmiar DOM
Zbyt duże drzewo DOM spowalnia renderowanie strony – ogranicz liczbę elementów HTML.
Co To W Ogóle Znaczy?
DOM (Document Object Model) to wszystkie elementy HTML na Twojej stronie – każdy <div>, <p>, <span>, <img>. Im więcej ich masz, tym więcej pracy dla przeglądarki. Musi przetworzyć każdy element, obliczyć jego pozycję, style, interakcje.
Przykład: Strona z 3000 elementami DOM ładuje się znacznie wolniej niż strona z 800 elementami, nawet jeśli mają “taką samą” treść. Przeglądarka musi przeanalizować każdy element.
Google zaleca do 1500 elementów DOM
Jak sprawdzić: PageSpeed Insights → Diagnostyka → “Avoid an excessive DOM size”. Możesz również skorzystać z Chrome DevTools (przycisk F12). W w zakładce „Performance” możesz nagrać sesję ładowania strony, a podsumowanie pokaże Ci rozmiar DOM i liczbę elementów.
Jak To Naprawić?
Problem: Page buildery (Elementor, Divi) często tworzą ogromne drzewa DOM. Prosty tekst z obrazkiem może mieć kilkanaście wrappujących divów. Mnóż to przez całą stronę.
Rozwiązanie:
- Użyj lżejszego page buildera (Bricks, Breakdance) lub korzystaj wyłącznie z Gutenberga
- Usuń niepotrzebne sekcje i elementy
- Ogranicz liczbę pluginów dodających HTML (slidery, animacje)
- Upraszczaj layouty – czasem 3 divy zrobią to samo co 10
Jeśli masz problem z rozmiarem DOM, to zazwyczaj oznaka, że page builder lub motyw jest przeładowany.
Pro tip: Jeżeli zależy Ci na maksymalnej kontroli, wydajności i unikalnym wyglądzie, to wybierz szybki page builder jak Bricks czy Breakdance. Sam używam Bricks do 99% wszystkich projektów, ale muszę szczerze przyznać, że wymaga to dodatkowych umiejętności i czasu. Jeżeli zastanawiasz się który page builder wybrać, przeczytaj mój artykuł na ten temat.
CDN (Content Delivery Network)
Dostarczanie statycznych zasobów z serwerów najbliższych użytkownikowi.
Najlepsze: FlyingCDN, Cloudflare, BunnyCDN, KeyCDN.
O FlyingCDN już pisałem wyżej. Jeśli nie chcesz płacić, Cloudflare ma darmowy plan z podstawowym CDN.
Najczęściej Zadawane Pytania (FAQ)
Ile czasu zajmuje optymalizacja WordPress?
Podstawowa optymalizacja (hosting, cache, obrazy) to 2-4 godziny roboty. Zaawansowana (edge caching, resource hints, database cleanup) to kolejne 4-8 godzin.
Efekty są zazwyczaj widoczne od razu. PageSpeed Insights może skoczyć z 40 na 90+ punktów, szczególnie jeżeli zajmiesz się opóźnieniem JavaScript.
Czy mogę samodzielnie przyspieszyć WordPress?
Tak, szczególnie podstawowe techniki (wtyczka cache, optymalizacja obrazów, wybór dobrego hostingu). Zaawansowane optymalizacje mogą wymagać pomocy developera.
Która wtyczka cache jest najlepsza?
Dla większości: FlyingPress (płatna, all-in-one) Darmowa, dla serwerów LiteSpeed: LiteSpeed Cache.
Czy warto płacić za FlyingCDN?
Jeśli masz globalny ruch (użytkownicy z różnych krajów) – absolutnie tak. TTFB < 50ms na całym świecie to game changer.
Jeśli Twoi użytkownicy są tylko z Polski i masz dobry hosting w Polsce – może nie być to konieczne.
Czy mogę użyć wszystkich tych technik naraz?
Nie tylko możesz, ale powinieneś. Te techniki się uzupełniają, nie wykluczają.
Jedyne ostrzeżenie: testuj po każdej zmianie. Czasem wtyczki cache mogą kolidować z innymi wtyczkami.
Co Daje Największy Efekt?
Z mojego doświadczenia, ranking największych “wins”:
- Delay/Defer JavaScript i CSS – największy skok w Core Web Vitals, może podnieść wynik z 50 na 95 punktów jednym przełącznikiem (ale wymaga testowania)
- Optymalizacja obrazów (WebP, lazy load, CDN) – często 50-70% redukcji czasu ładowania
- Czcionki (WOFF2, lokalne, font-display: swap) – zmniejszenie CLS i przyspieszenie LCP
- Ikony SVG zamiast icon fonts – szczególnie jeśli używasz Font Awesome
- Minifikacja i łączenie CSS/JS – mniej zapytań HTTP, mniejszy rozmiar plików
- Dobry hosting (LiteSpeed + NVMe + Redis) – bez tego reszta ma ograniczony efekt
Zacznij od góry listy. Delay JavaScript da potężne przyspieszenie, ale wymaga ostrożności. Hosting to podstawa długoterminowa – wybierz dobrze raz i masz spokój na lata.
Ostatnia rada
Optymalizacja szybkości WordPress to nie sprint, tylko maraton. Nie próbuj wdrożyć wszystkiego w jeden dzień.
Mój plan dla Ciebie:
Tydzień 1: Hosting + Cache Tydzień 2: Obrazy + Czcionki Tydzień 3: CSS/JS Tydzień 4: Baza danych + Monitoring.
Po miesiącu Twoja strona będzie ładować się 50-70% szybciej, Core Web Vitals będą w zieleni, a użytkownicy szczęśliwsi.
Pamiętaj: Każda optymalizacja to nie tylko lepsza pozycja w Google, ale przede wszystkim lepsze doświadczenie dla Twoich użytkowników. To się przekłada na konwersje, na sprzedaż – czyli realne pieniądze.
Powodzenia! 🚀
P.S. Chcesz więcej praktycznych porad, case study i strategii Optymalizacji, które rzeczywiście działają? Obserwuj BezLaga na Facebooku – tam regularnie dzielę się wiedzą o WordPress, szybkości stron i marketingu. Mój cel to dostarczyć jak najwięcej wartości za darmo i zdobyć Twoje zaufanie. Win-win. 😉

