Umów konsultację

Bezpłatna wycena w 24h

Szybkość WooCommerce — jak przyspieszyć sklep bez wymiany hostingu

Szybkość WooCommerce — jak przyspieszyć sklep bez wymiany hostingu

Narzędzia23 maja 202611 min czytania

Średni sklep WooCommerce ładuje się 4–6 sekund na mobile. To nie jest problem hostingu (choć hosting pomaga) — to problem architektury: 40–60 wtyczek, page builder na każdej stronie, niepoptymalizowana baza danych i obrazy w PNG po 2 MB. Poniżej opisujemy, co konkretnie robimy, żeby sklep WooCommerce spadł poniżej 2.5s LCP i przeszedł Core Web Vitals — bez wymiany hostingu i bez przepisywania sklepu od zera.

Dlaczego WooCommerce jest wolny — anatomia problemu

WooCommerce sam w sobie nie jest wolny. Wolny jest WooCommerce z 40 wtyczkami, Elementorem, niepoptymalizowaną bazą i obrazami, które nikt nie skompresował. Typowa strona produktowa generuje 100–200 zapytań SQL i ładuje 2–4 MB zasobów (CSS, JS, obrazy, fonty). To jest za dużo.

Główne źródła wolności, w kolejności wpływu:

  • Wtyczki — każda wtyczka dodaje własne CSS i JS do każdej podstrony. Social share widget ładuje 200 KB JS na stronie produktu, choć nikt go tam nie klika. Formularz kontaktowy ładuje się na stronie głównej, choć jest tylko na /kontakt.
  • Page builder (Elementor/Divi) — generuje tony nieużywanego CSS/JS. Typowy Elementor dodaje 300–500 KB samego CSS na każdą stronę. Dlatego nie budujemy na page builderach.
  • Baza danych — tabela wp_options rośnie w nieskończoność (transients, autoload, revision). Po roku działania sklepu tabela options ma 10 000+ wierszy, z czego 70% to śmieci.
  • Obrazy — zdjęcia produktów wrzucane prosto z aparatu (3000x4000 px, 3 MB, JPEG). Brak srcset, brak lazy loading, brak WebP/AVIF.

Krok 1: Audyt wtyczek — usuwanie balastu

Pierwsza rzecz, którą robimy w każdym projekcie optymalizacji WooCommerce: audyt wtyczek z Query Monitor. Instalujemy Query Monitor, otwieramy stronę produktową i sprawdzamy, które wtyczki ładują CSS/JS i ile zapytań SQL generują.

Typowe wyniki audytu:

  • Social share plugin — 180 KB JS, 0 użycia na stronie produktu. Wyłączamy na produktach.
  • Contact Form 7 — 50 KB JS na każdej stronie (jest potrzebny tylko na /kontakt). Ograniczamy ładowanie do strony kontaktowej.
  • Slider plugin — 250 KB JS, używany tylko na stronie głównej. Ograniczamy do strony głównej.
  • SEO plugin (Yoast/RankMath) — 100+ KB CSS/JS na froncie. Wyłączamy frontend CSS/JS, zostawiam tylko meta tagi.

Samo ograniczenie ładowania wtyczek do stron, gdzie są potrzebne, zmniejsza rozmiar strony o 30–50%. Bez usuwania wtyczek — tylko inteligentne ładowanie.

Krok 2: Czyszczenie bazy danych

Baza danych WooCommerce po roku działania to bałagan. Co czyścimy:

  • Revision posts — WordPress trzyma każdą wersję roboczą każdego produktu. 500 produktów × 10 rewizji = 5000 zbędnych wierszy. Ustawiamy define('WP_POST_REVISIONS', 3); i czyścimy stare rewizje.
  • Transients — tymczasowe dane wtyczek, które zaśmiecają wp_options. DELETE FROM wp_options WHERE option_name LIKE '%_transient_%' — czasem usuwa tysiące wierszy.
  • Autoload w wp_options — WordPress ładuje wszystkie opcje z autoload='yes' przy każdym requeście. Wtyczki ustawiają autoload na dane, które nie są potrzebne na każdej stronie. Audytuję i zmieniam na 'no' gdzie możliwe.
  • WooCommerce sessions — stare sesje klientów w bazie. WooCommerce ma cron job do czyszczenia, ale często jest uszkodzony. Czyścimy ręcznie.

Po czyszczeniu bazy TTFB spada o 100–300 ms. Nie jest to rewolucja, ale w połączeniu z Redis Object Cache efekt jest znaczący — Redis cache'uje wyniki zapytań, a czysta baza oznacza szybsze zapytania, które nie są w cache.

Krok 3: Obrazy — największy quick win

Obrazy to najczęściej 60–80% rozmiaru strony produktowej. Co robimy:

Max Mazurkiewicz

Max Mazurkiewicz

Founder

POTRZEBUJESZ SPERSONALIZOWANEJ WYCENY?

Chcesz się na coś zdecydować ale od nadmiaru możliwości boli głowa? Skontaktuj się z nami, dobierzemy rozwiązanie do potrzeb Twojej firmy.

Umów się na konsultację
  • WebP/AVIF — konwertujemy wszystkie obrazy na WebP (70–80% mniejsze niż JPEG) z fallbackiem na JPEG. Używamy ShortPixel lub Imagify na serwerze — nie w przeglądarce.
  • Responsive images (srcset) — zamiast jednego obrazu 1200px, generujemy wersje 400, 800, 1200 px. Mobilny użytkownik ładuje 400px zamiast 1200px.
  • Lazy loading — obrazy poniżej fold ładują się dopiero, gdy użytkownik scrolluje. Natywne loading="lazy" na wszystkim poza hero image i pierwszym produktem.
  • Preload LCP image — główne zdjęcie produktu dostaje preload w <head>, żeby ładowało się równolegle z CSS, nie po nim.

Efekt: strona produktowa z 3 MB spada do 400–600 KB. LCP poprawia się o 1–2 sekundy.

Krok 4: Checkout — tam, gdzie konwersja się łamie

Checkout WooCommerce to osobny problem wydajnościowy. Domyślny checkout ładuje jQuery, jQuery UI, selectWoo i kilka dodatkowych skryptów. Na mobile to 3–5 sekund ładowania — a klient właśnie chce zapłacić.

Co optymalizujemy:

  • Usunięcie zbędnych pól — domyślny checkout ma pola, których sklep nie potrzebuje (Company, Address 2, State). Mniej pól = szybszy render i wyższa konwersja.
  • Blokowy checkout (WooCommerce Blocks) — nowy checkout oparty na React, szybszy od klasycznego PHP checkout. Wdrażamy tam, gdzie wtyczki go wspierają.
  • Lazy load payment gateways — skrypty Stripe, PayPal, BLIK ładują się dopiero po wyborze metody płatności, nie przy ładowaniu strony.

Krok 5: Cache wielopoziomowy

W WooCommerce cache jest bardziej złożony niż na zwykłej stronie, bo część treści jest dynamiczna (koszyk, ceny, stock):

  • Page cache z wykluczeniem dynamicznych stron — cache'uję strony produktowe, kategorie, stronę główną. Wykluczam: koszyk, checkout, moje-konto, wishlist.
  • Object cache (Redis) — cache'uje wyniki zapytań SQL. Na WooCommerce z 500+ produktami daje największy efekt na stronach kategorii i wyszukiwaniu.
  • Browser cache — ustawiamyy agresywne cache headers na statycznych zasobach (CSS, JS, obrazy): max-age=31536000 dla plików z hash w nazwie.
  • CDN — Cloudflare lub BunnyCDN przed serwerem. Statyczne zasoby serwowane z edge, dynamiczne przechodzą do origin. Na polskim rynku CDN daje mniejszy efekt niż na globalnym, ale nadal 50–100 ms szybciej.

Z naszej praktyki — konkretne optymalizacje WooCommerce

Trzy realne przypadki optymalizacji wydajności sklepów WooCommerce z naszego portfolio:

  • Nobobobo (artykuły dla dzieci) — sklep z biblioteką 7800 plików graficznych uploadowanych bezpośrednio z aparatów producentów. Workflow optymalizacji: audyt biblioteki, backup pełny, konwersja wszystkich zdjęć do WebP z fallback JPG (jakość 82), wdrożenie Redis Object Cache dla cache zapytań SQL. Łączna oszczędność wagi biblioteki to dziesiątki gigabajtów, TTFB strony głównej spadł z poziomu „niedopuszczalny" do akceptowalnego zgodnie z Google PageSpeed Insights.
  • Podsztanga (szkolenia trójboju siłowego) — wymiana ciężkiego motywu WoodMart na lekki Hello Theme + custom child theme. Wyjściowy wynik PageSpeed mobile był na poziomie 42/100 (czerwona strefa Lighthouse), LCP osiągał 9 sekund. Po migracji motywu i optymalizacji assets wyniki przeszły do akceptowalnego zielonego. Dla sklepu, w którym klient kupuje z telefonu na siłowni w przerwach treningowych, to było absolutnie krytyczne.
  • huka.com.pl (akcesoria premium dla psów) — odchudzenie sklepu przez wyłączenie 4 wtyczek analitycznych (Site Kit, PixelYourSite, GTM4WP, Google for WooCommerce — pomiar) i zastąpienie ich jednym custom kodem w functions.php. Każda wyłączona wtyczka to mniej zapytań SQL i mniej JavaScript do parsowania.

Wzorzec we wszystkich trzech: mniej wtyczek + agresywny cache + WebP zamiast PNG/JPG. Hosting i CDN pomagają, ale to są szlifierki, nie fundament.

Jeśli potrzebujesz pomocy z optymalizacją szybkości sklepu — audytujemy wydajność, wdrażamy poprawki i monitorujemy Core Web Vitals po zmianach.

Najczęściej zadawane pytania

Zainstaluj Query Monitor — pokaże, ile zapytań SQL generuje każda strona i które wtyczki je wywołują. Zmierz TTFB curl-em lub WebPageTest. Sprawdź rozmiar strony w DevTools (Network tab). Typowy problem: 40+ wtyczek, page builder i nieskompresowane obrazy. Audyt z Query Monitor zajmuje 30 minut i pokazuje dokładnie, co usunąć.

Hosting to 20–30% problemu. Lepszy serwer poprawi TTFB o 100–300 ms, ale jeśli strona ładuje 3 MB zasobów i ma 50 wtyczek — nadal będzie wolna. Najpierw optymalizuj kod (wtyczki, obrazy, bazę), potem zmieniaj hosting. Często sama optymalizacja wystarczy.

Jednorazowa optymalizacja (audyt wtyczek, czyszczenie bazy, kompresja obrazów, konfiguracja cache) to zwykle 2 000–5 000 zł. Czas realizacji: 1–2 tygodnie. Efekt: LCP poniżej 2.5s, strona produktowa poniżej 1 MB, panel admina 2x szybszy.

Tak — Elementor dodaje 300–500 KB CSS/JS na każdą stronę, nawet jeśli nie jest na niej używany. Na stronie produktowej WooCommerce to dodatkowe 0.5–1s ładowania. Dlatego budujemy sklepy na custom motywach z ACF — pełna kontrola nad kodem, zero balastu page buildera.

Max Mazurkiewicz
Max Mazurkiewicz
Founder
Digital marketing expert