Optymalizacja szybkości WordPress — kompletny przewodnik
Opublikowano: 9 kwietnia 2026 · Kategoria: WordPress
Szybkość strony WordPress ma bezpośredni wpływ na pozycję w Google (Core Web Vitals są czynnikiem rankingowym), konwersje i bounce rate. Niezoptymalizowany WordPress może ładować się 5-10 sekund — po optymalizacji ten sam serwis powinien ładować się poniżej 2 sekund. Ten przewodnik pokazuje wszystkie warstwy optymalizacji: od cachingu przez obrazy po konfigurację serwera.
Core Web Vitals — co mierzyć
Google używa Core Web Vitals jako czynnika rankingowego. Trzy kluczowe metryki:
| Metryka | Dobry | Wymaga poprawy | Słaby |
|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5 s | 2.5–4 s | > 4 s |
| INP (Interaction to Next Paint) | < 200 ms | 200–500 ms | > 500 ms |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1–0.25 | > 0.25 |
Mierz w Google PageSpeed Insights (dane laboratoryjne) i Google Search Console (dane terenowe z prawdziwych użytkowników — ważniejsze dla SEO).
Caching — trzy warstwy
Caching w WordPress działa na trzech poziomach:
- Page Cache (caching stronicowy) — zapisuje gotowe HTML strony na dysku lub w pamięci. Kolejne żądania dostają plik HTML bez uruchamiania PHP i zapytań do bazy. Największy wpływ na TTFB.
- Object Cache (Redis/Memcached) — cachuje wyniki zapytań do bazy danych i obliczenia PHP w pamięci RAM. Szczególnie ważny dla stron z logowaniem (user-specific dane nie mogą być w page cache).
- Fragment Cache (opcjonalnie) — cachuje części strony (np. sidebar, menu), gdy reszta jest dynamiczna. Realizowany przez LiteSpeed ESI lub własny kod.
Wtyczki cache — porównanie
| Wtyczka | Cena | Wymagania | Zalety |
|---|---|---|---|
| LiteSpeed Cache | Darmowa | Serwer LiteSpeed | Natywny cache serwera, ESI, object cache, image optim |
| WP Rocket | ~$59/rok | Dowolny hosting | Łatwa konfiguracja, wszystko w jednym, świetny wsparcie |
| W3 Total Cache | Darmowa (Pro: $99) | Dowolny hosting | Elastyczna konfiguracja, Redis, Memcached, CDN integracja |
| WP Super Cache | Darmowa | Dowolny hosting | Prosta, mało zasobożerna, Automattic (twórcy WP) |
Redis Object Cache — konfiguracja
Jeśli hosting oferuje Redis (lub masz VPS), włącz Redis object cache. Instalacja:
# Na VPS: zainstaluj Redis
sudo apt install redis-server
sudo systemctl enable --now redis
# Zainstaluj wtyczkę Redis Object Cache (przez WP-CLI lub panel admin)
wp plugin install redis-cache --activate
# Dodaj do wp-config.php (przed /* That's all, stop editing! */)
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_DATABASE', 0);
# define('WP_REDIS_PASSWORD', 'twoje-haslo'); # jeśli Redis ma hasło
# Włącz obiektowe cachowanie z WP-CLI
wp redis enable
# Sprawdź status
wp redis status Optymalizacja obrazów — WebP i lazy load
Obrazy to zwykle największy element wpływający na LCP. Strategia optymalizacji:
- Format WebP — o 25-35% mniejszy niż JPEG/PNG przy tej samej jakości. Wtyczki: Smush (automatyczna konwersja), ShortPixel, Imagify. LiteSpeed Cache ma wbudowaną konwersję WebP.
- Lazy Loading — obrazy poza viewportem ładują się dopiero gdy użytkownik scrolluje.
WordPress 5.5+ ma natywny lazy load (
loading="lazy"). Pierwszy obraz LCP NIE powinien mieć lazy load — użyjloading="eager"ifetchpriority="high". - Rozmiary responsywne — WordPress generuje kilka rozmiarów każdego obrazu i
serwuje odpowiedni przez
srcset. Sprawdź czy masz poprawnie ustawione rozmiary w Ustawieniach → Media. - Kompresja — Smush (darmowy do 50 MB/msc), ShortPixel (brak limitu miesięcznego dla istniejących obrazów, płatny). Zalecana kompresja stratna (lossy) — różnica niewidoczna dla użytkownika.
CDN — Cloudflare i BunnyCDN
CDN (Content Delivery Network) serwuje statyczne zasoby z serwerów bliskich geograficznie użytkownikowi:
- Cloudflare (darmowy) — zmień nameservery domeny na Cloudflare. Automatycznie cachuje statyczne pliki (JS, CSS, obrazy), chroni przed DDoS, zapewnia darmowy SSL. Wystarczy dla większości stron.
- BunnyCDN (~$1/msc) — dedykowany CDN do serwowania mediów (Pull Zone). Szczególnie dobry dla galerii zdjęć i serwisów z dużą ilością obrazów. Integruje się z WP Rocket i innymi wtyczkami cache.
Baza danych — optymalizacja wp_options
-- Sprawdź największe opcje z autoload=yes SELECT option_name, LENGTH(option_value) AS size_bytes FROM wp_options WHERE autoload = 'yes' ORDER BY size_bytes DESC LIMIT 20; -- Usuń wygasłe transients (cache) DELETE FROM wp_options WHERE option_name LIKE '_transient_%' OR option_name LIKE '_site_transient_%'; -- Wyczyść tabele (usuń wersje, spam itp.) -- Najlepiej przez wtyczkę WP-Optimize lub WP-CLI: -- wp db optimize -- wp transient delete --all
Wtyczka WP-Optimize (darmowa) automatyzuje czyszczenie: wersje postów, spam komentarze, transients, optymalizacja tabel InnoDB. Uruchamiaj co tydzień.
Minimalizacja JS/CSS — defer i async
# W wp-config.php lub functions.php możesz ręcznie dodać defer:
# Ale lepiej używaj wtyczki (WP Rocket, W3TC, LiteSpeed Cache)
# WP Rocket: Dashboard → File Optimization:
# - Minify CSS ✓
# - Combine CSS ✓ (ostrożnie — sprawdź czy nie psuje designu)
# - Remove Unused CSS ✓
# - Minify JavaScript ✓
# - Defer JavaScript execution ✓
# - Delay JavaScript execution (do interakcji) ✓
# WP-CLI: sprawdź które skrypty ładują się bez defer/async:
wp eval 'global $wp_scripts; foreach ($wp_scripts->registered as $s) { if (!isset($s->extra["defer"]) && !isset($s->extra["async"])) echo $s->handle . "\n"; }' PHP OPcache i konfiguracja serwera
# Sprawdź czy OPcache jest aktywny php -r "echo opcache_get_status()['opcache_enabled'] ? 'OPcache ON' : 'OPcache OFF';" # Optymalna konfiguracja php.ini dla WordPress (PHP 8.2+): [opcache] opcache.enable = 1 opcache.memory_consumption = 256 ; MB pamięci dla OPcache opcache.interned_strings_buffer = 16 ; MB dla interned strings opcache.max_accelerated_files = 10000 ; ile plików PHP cachować opcache.revalidate_freq = 60 ; co ile sekund sprawdzać zmiany opcache.validate_timestamps = 1 ; 0 w produkcji (szybciej) jeśli nie edytujesz plików live opcache.jit_buffer_size = 100M ; JIT (PHP 8+) — dodatkowe przyspieszenie opcache.jit = 1255
Wyniki przed i po optymalizacji — typowe wartości
| Metryka | Przed optymalizacją | Po optymalizacji |
|---|---|---|
| TTFB (Time to First Byte) | 800–2000 ms | 50–200 ms (z page cache) |
| LCP | 4–8 s | 1–2.5 s |
| Rozmiar strony | 3–8 MB | 0.5–2 MB (WebP + minifikacja) |
| Liczba requestów HTTP | 80–150 | 20–50 (po połączeniu CSS/JS) |
| PageSpeed Insights (mobile) | 20–50 pkt | 70–95 pkt |