Dlaczego WooCommerce bywa wolny
WooCommerce to sklep zbudowany na WordPressie — a WordPress daje ogromną elastyczność kosztem narzutu. Front, motyw, wtyczki i baza działają na jednym serwerze, a dodatkowo sklep ma jedną cechę, która odróżnia go od zwykłej strony: koszyk i checkout są dynamiczne i nie da się ich cache'ować tak jak reszty.
Najczęstsze przyczyny wolnego WooCommerce:
- Wolny TTFB na współdzielonym hostingu — wg danych CrUX tylko część sklepów WordPress ma dobry czas odpowiedzi serwera; to główny hamulec LCP
- Nadmiar wtyczek — każda wtyczka potrafi wstrzykiwać własny CSS i JS na każdą podstronę, nawet tam, gdzie nie jest używana
- Ciężki motyw — rozbudowane motywy „multi-purpose" z page builderami dokładają dziesiątki żądań i skryptów
- Brak cache stron i obiektów — bez page cache i Redisa każde wejście generuje zapytania do bazy od zera
- Nieoptymalne obrazy i render-blocking JS — produkty w JPG/PNG, brak preloadu obrazu LCP, marketingowe skrypty ładowane od razu
Core Web Vitals w WooCommerce — co mierzyć
Core Web Vitals to metryki, którymi Google ocenia realne doświadczenie użytkownika i które wpływają na pozycje w wyszukiwarce. Cele dla sklepu WooCommerce:
- LCP (największy element) — poniżej 2,5 s
- INP (reakcja na interakcję) — poniżej 200 ms
- CLS (stabilność układu) — poniżej 0,1
- TTFB (czas do pierwszego bajtu) — poniżej 800 ms z cache
- LCP — wolny TTFB, obraz produktu lazy-loadowany
- INP — ciężki JS wtyczek blokujący wątek główny
- CLS — obrazy i banery bez wymiarów, doładowywane fonty
- TTFB — współdzielony hosting, brak page/object cache
Krok 1: cache stron i obiektów
Cache to najtańszy i najskuteczniejszy sposób na przyspieszenie WooCommerce. Klucz to jednak poprawne wykluczenia — koszyk, checkout i konto klienta muszą pozostać dynamiczne:
Włącz page cache
Cache pełnych stron dla katalogu i stron produktów — publiczne, statyczne treści.
Wyklucz koszyk, checkout i konto
Te strony są dynamiczne — muszą zostać poza cache, żeby nie serwować cudzego koszyka.
Włącz object cache (Redis/Memcached)
Buforuje wyniki zapytań do bazy — wielka różnica przy katalogu i koszyku.
Przetestuj pełną ścieżkę zakupu
Dodaj do koszyka, przejdź do kasy, złóż zamówienie testowe — sprawdź, czy cache nic nie zepsuł.
Dobra wtyczka cache (np. WP Rocket) domyślnie wyklucza koszyk i checkout — ale zawsze sprawdź, czy po włączeniu cache dodanie do koszyka i finalizacja zamówienia działają poprawnie.
Krok 2: lekki motyw i audyt wtyczek
Motyw i wtyczki to najczęstsza ukryta przyczyna wolnego WooCommerce. Zasada: każda nieużywana wtyczka to czysta strata — dokłada skrypty, style i zapytania na każdej podstronie.
Zmierz wpływ motywu
Lekki, WooCommerce-kompatybilny motyw bywa szybszy niż rozbudowany „multi-purpose" z page builderem.
Zrób listę wtyczek
Wypisz aktywne wtyczki i zaznacz te, których realnie używasz.
Wyłącz i usuń zbędne
Dezaktywuj i odinstaluj nieużywane wtyczki — nie zostawiaj ich „na wszelki wypadek".
Testuj podejrzane pojedynczo
Wyłącz podejrzaną wtyczkę i porównaj czas odpowiedzi oraz liczbę żądań przed/po.
Uważaj zwłaszcza na rozbudowane motywy z page builderami i wtyczki „all-in-one" ładujące własne biblioteki (slidery, popupy), które dublują to, co masz w motywie.
Krok 3: obrazy — największy dług wagi strony
Obrazy to zwykle 60–80% wagi strony i główny czynnik LCP oraz CLS. Cztery działania:
- WebP lub AVIF — nowoczesne formaty tną wagę o 30%+ przy tej samej jakości; obrazy nad pierwszym ekranem trzymaj poniżej ~100 KB
- NIE lazy-loaduj obrazu LCP — główny obraz produktu powinien być
preloadowany zfetchpriority="high", a nie odkładany na później - Lazy loading poniżej pierwszego ekranu — reszta obrazów ładuje się dopiero przy scrollu
- Sztywne wymiary —
widthiheightna każdym obrazie i banerze; to jedyny skuteczny sposób na CLS
Krok 4: JavaScript i skrypty firm trzecich
Marketing, chaty, heatmapy i piksele społecznościowe potrafią mocno obciążać wątek główny i psuć INP. Dwie zasady:
- Defer dla niekrytycznego JS — skrypty, które nie są potrzebne do pierwszego renderu, ładuj z
defer - Delay do interakcji — skrypty marketingowe (piksele, chat, analityka zachowań) ładuj dopiero po pierwszej interakcji użytkownika, jeśli biznesowo się to spina
Krok 5: hosting, PHP i CDN
To zmiany, które najmocniej ruszają TTFB — a żadna nie wymaga przepisywania sklepu:
- Hosting zarządzany z cache serwerowym — dedykowany pod WordPress/WooCommerce, z page cache i object cache na poziomie serwera
- Object cache Redis lub Memcached — trzyma wyniki zapytań w pamięci; ogromna różnica przy katalogu i koszyku
- PHP 8.1 lub nowsze + OPcache — sam skok wersji PHP daje kilkadziesiąt procent szybszego przetwarzania
- CDN przed domeną — np. Cloudflare na statyczne zasoby; niższa latencja i odciążony serwer bez zmian w kodzie
Co daje najwięcej — kolejność działań
Jeśli masz zrobić tylko kilka rzeczy, zrób je w tej kolejności — od największego zwrotu przy najmniejszym wysiłku:
Hosting zarządzany + cache serwerowy
Największy skok TTFB — page cache i object cache na poziomie serwera.
Wtyczka cache z wykluczeniami
Page cache dla katalogu, koszyk i checkout poza cache. Object cache Redis, jeśli hosting pozwala.
Obrazy: WebP/AVIF + preload LCP
Główny czynnik LCP i CLS; obraz LCP preloaduj, resztę lazy-loaduj.
Audyt wtyczek i lekki motyw
Wytnij wszystko, czego nie używasz — mniej skryptów i zapytań.
Defer/delay skryptów firm trzecich
Marketing, chat, heatmapy — ładuj po interakcji, żeby ratować INP.
Gdzie kończy się optymalizacja motywu
Powyższe kroki potrafią przenieść sklep z wyniku 40 na 80+ w PageSpeed. Ale w pewnym momencie uderzasz w sufit architektury: front WooCommerce renderuje WordPress razem z motywem i wtyczkami na tym samym serwerze co backend. Wyczyściłeś cache, wyciąłeś wtyczki, skonwertowałeś obrazy — a narzut WordPressa i tak zostaje.
Wtedy zostaje zmiana architektury — headless. Front działa jako osobna, zoptymalizowana aplikacja na własnej infrastrukturze i komunikuje się z WooCommerce wyłącznie przez API. Panel, produkty, zamówienia i checkout zostają bez zmian — zmienia się tylko warstwa, która decyduje o wydajności.
- Front renderowany przez WordPress na serwerze sklepu
- Każda wtyczka dokłada skrypty i zapytania
- Wydajność ograniczona przez WordPress i hosting
- Optymalizacja to walka z narzutem, nie jego eliminacja
- Front na osobnej infrastrukturze — niezależny od backendu
- Pełna kontrola nad każdym skryptem i zasobem
- 90+ PageSpeed osiągalne, bo nie ma narzutu WordPressa
- Wyszukiwarka, chat i rekomendacje wbudowane, nie doklejane
Headless ma sens, gdy wydajność jest priorytetem, a optymalizacja motywu przestała wystarczać. Jak to działa krok po kroku, opisaliśmy w osobnych materiałach:
Źródła
- DebugBear — WooCommerce Performance Optimization
debugbear.com/blog/optimize-woocommerce-performance - CoreWebVitals.io — Core Web Vitals for WordPress (2026)
corewebvitals.io/core-web-vitals/wordpress-guide - CTA Flow — WooCommerce Performance Optimization Guide 2026
ctaflow.com/blog/woocommerce-performance-optimization/ - OnlineMediaMasters — Speed Up Your Slow WooCommerce Store
onlinemediamasters.com/speed-up-slow-woocommerce-store/ - PageSpeedMatters — Best E-Commerce Platforms for Speed 2026
pagespeedmatters.com/resources/guides/best-ecommerce-platforms-speed-2026-shopify-woocommerce-bigcommerce-headless
