Prędkość ładowania sklepu internetowego: przewodnik technicznej optymalizacji dla WooCommerce, PrestaShop i Magento

Autor: Łukasz Tarabuła

2026-07-22
Bez kategorii

Prędkość ładowania sklepu internetowego bezpośrednio decyduje o konwersji – sklep ładujący się w 1 sekundę osiąga nawet 2,5× wyższy współczynnik konwersji niż ten ładujący się 5 sekund. Każda sekunda opóźnienia może kosztować nawet 7% sprzedaży, a Google premiuje w rankingu strony spełniające progi Core Web Vitals (LCP poniżej 2,5 s, INP poniżej 200 ms, CLS poniżej 0,1). Ten przewodnik wyjaśnia jak mierzyć, diagnozować i optymalizować prędkość technicznie – od hostingu po konfigurację platform WooCommerce, PrestaShop, Magento, Shoper i IdoSell.

Dlaczego prędkość ładowania sklepu internetowego decyduje o konwersji i SEO

Prędkość ładowania sklepu internetowego obniża współczynnik konwersji o około 7% za każdą dodatkową sekundę i wpływa na pozycję w Google poprzez Core Web Vitals jako oficjalny sygnał rankingowy od 2021 roku. Dane mPulse Mobile pokazują nieliniowy spadek konwersji wraz ze wzrostem czasu ładowania, a 53% użytkowników mobilnych opuszcza stronę ładującą się dłużej niż 3 sekundy (Think with Google).

Czas ładowaniaWspółczynnik konwersji (mPulse)
2,4 s1,9%
3,3 s1,5%
4,2 sponiżej 1%
5,7 s i więcej0,6%

Raport Portent z analizy 27 krajów potwierdza, że sklep ładujący się 1 sekundę osiąga 3,05% konwersji, a przy 4 sekundach spada do 0,67% – to różnica ponad 4,5×. Case study Amazona z 2019 roku wykazało, że 1 sekunda opóźnienia kosztuje firmę 1,6 mld USD utraconej sprzedaży rocznie, a Walmart odnotował +2% współczynnika konwersji za każdą sekundę poprawy. Wpływ prędkości ładowania sklepu internetowego nie kończy się na sprzedaży: bounce rate rośnie o 32% przy wzroście czasu ładowania z 1 do 3 sekund, co Google traktuje jako negatywny sygnał behawioralny.

Jak czas ładowania wpływa na współczynnik konwersji – dane benchmarkowe

Zależność między czasem ładowania a współczynnikiem konwersji jest geometryczna, nie liniowa – opóźnienie z 1 s do 5 s nie obniża konwersji 5×, ale właśnie 4,5×. Dla sklepu generującego 1000 zamówień miesięcznie przy średniej wartości koszyka 250 zł, optymalizacja z 4 s do 2 s LCP może zwiększyć przychód o 50-70 tys. zł miesięcznie. Bezpośredni wpływ na abandon cart: każda dodatkowa sekunda na stronie checkout zwiększa porzucenia koszyka o 4-8%.

Prędkość sklepu jako czynnik rankingowy Google

Google ogłosił Page Speed sygnałem rankingowym dla desktop w 2010, Mobile Speed Update w 2018, a w czerwcu 2021 wprowadził Core Web Vitals jako część Page Experience. Wolne strony obniżają crawl budget – Googlebot indeksuje mniej URL-i przy długim TTFB, co dla sklepów z dużymi katalogami (>10 tys. produktów) oznacza opóźnienia w indeksacji nowych pozycji. Mobile-first indexing od 2023 roku oznacza, że Google rankuje wersję mobilną jako primary – to mobilny PSI score i CWV decydują o pozycji w SERP.

Core Web Vitals dla sklepów internetowych – progi LCP, INP i CLS

Core Web Vitals to trzy metryki Google (LCP, INP, CLS) oceniające doświadczenie użytkownika sklepu – każda ma progi „dobry/wymaga poprawy/zły” z bezpośrednim wpływem na ranking. Czwarty istotny wskaźnik TTFB nie należy formalnie do Core Web Vitals, ale jest fundamentem osiągnięcia dobrych wyników LCP.

MetrykaDobryWymaga poprawyZłyCo mierzy w sklepie
LCP<2,5 s2,5-4 s>4 sŁadowanie głównego zdjęcia produktu
INP<200 ms200-500 ms>500 msResponsywność kliknięcia „Dodaj do koszyka”
CLS<0,10,1-0,25>0,25Stabilność layoutu przy lazy-loading zdjęć
TTFB<200 ms<600 ms>800 msCzas odpowiedzi serwera (nie CWV, ale kluczowy)

W marcu 2024 Google zastąpił FID (First Input Delay) metryką INP (Interaction to Next Paint), która mierzy responsywność wszystkich interakcji w trakcie sesji, a nie tylko pierwszej. Oceny Core Web Vitals widoczne są w Google Search Console w raporcie „Podstawowe wskaźniki internetowe” oraz w danych field z CrUX (Chrome User Experience Report) zbieranych przez 28 dni od realnych użytkowników Chrome. Próg „dobrego” wyniku Core Web Vitals dla sklepu internetowego wymaga, by 75% sesji mieściło się w zielonych progach – to oznacza, że pojedyncze szybkie strony nie wystarczą.

LCP (Largest Contentful Paint) – jak mierzyć i poprawiać

LCP to czas wyrenderowania największego elementu w viewport – w sklepie internetowym najczęściej jest to zdjęcie hero produktu lub baner kategorii. Próg dobrego LCP wynosi poniżej 2,5 s. Optymalizacja: preload elementu LCP (<link rel="preload" as="image">), serwowanie obrazu w WebP lub AVIF, CDN dla statycznych zasobów, redukcja TTFB. Diagnostyka: PageSpeed Insights wskazuje konkretny element jako „LCP element” w zakładce Diagnostyka.

INP (Interaction to Next Paint) – responsywność koszyka i filtrów

INP mierzy opóźnienie między interakcją użytkownika a aktualizacją UI – krytyczne dla sklepu internetowego są kliknięcia filtrów kategorii, „Dodaj do koszyka”, przyciski checkout. Próg dobrego INP wynosi poniżej 200 ms. INP zastąpił FID w marcu 2024, ponieważ FID mierzył tylko pierwszą interakcję. Optymalizacja: code splitting, lazy loading bibliotek JavaScript (Webpack, Vite), eliminacja render-blocking resources, unikanie długich tasków JS (>50 ms).

CLS (Cumulative Layout Shift) – stabilność przy ładowaniu zdjęć produktów

CLS to suma niespodziewanych przesunięć layoutu w trakcie ładowania – próg dobrego CLS wynosi poniżej 0,1. W sklepie internetowym typowe sprawcy: lazy-loaded zdjęcia produktów bez zarezerwowanej przestrzeni, banner cookie wyświetlany po załadowaniu, dynamiczne rekomendacje produktów. Optymalizacja: atrybuty width i height na każdym <img>, CSS aspect-ratio, skeleton screens dla kart produktowych, rezerwacja miejsca dla bannerów.

TTFB (Time to First Byte) – ukryte wąskie gardło serwera

TTFB to czas między żądaniem HTTP a otrzymaniem pierwszego bajtu odpowiedzi – doskonały TTFB wynosi poniżej 200 ms, akceptowalny do 600 ms, problematyczny powyżej 800 ms. Główne przyczyny wysokiego TTFB w sklepach internetowych: shared hosting z noisy neighbour effect, brak object cache Redis, długie zapytania SQL do bazy WooCommerce/PrestaShop. Diagnostyka: zakładka Network w Chrome DevTools pokazuje „Waiting (TTFB)” per zasób, WebPageTest waterfall ma kolumnę dedykowaną TTFB.

Jak mierzyć prędkość sklepu internetowego – narzędzia i interpretacja wyników

Prędkość sklepu internetowego mierzy się narzędziami Google PageSpeed Insights, GTmetrix, WebPageTest i Lighthouse – każde pokazuje inne aspekty wydajności, a różnica między danymi „lab” i „field” jest kluczowa dla diagnozy. Dane laboratoryjne to symulowany pojedynczy test z kontrolowanego środowiska, dane z pola to anonimizowane pomiary realnych użytkowników Chrome (CrUX) z ostatnich 28 dni.

NarzędzieTyp danychLokalizacja testuNajlepsze do
PageSpeed InsightsLab + Field (CrUX)USA (lab)Szybki audyt, oficjalne wyniki Google
GTmetrixLabVancouver (free), 22 lokalizacji (paid)Waterfall analysis, historia
WebPageTestLab40+ lokalizacji (Polska, Niemcy)Filmstrip, advanced settings, 3G/4G
Lighthouse (DevTools)LabLokalna maszynaAudyt z poziomu przeglądarki
Google Search ConsoleField (CrUX)Realni użytkownicyMonitoring CWV, podział URL groups

Wynik PageSpeed Insights 0-100 nie koreluje 1:1 z rankingiem – Google używa danych field z CrUX dla rankingu, a wynik laboratoryjny jest jedynie wskazówką diagnostyczną. Strona z Progressive Web App może mieć 15 punktów w PSI, ale dla użytkownika ładuje się natychmiastowo dzięki service worker. Pomiar prędkości sklepu internetowego wymaga obu typów danych: lab dla diagnozy, field dla rankingu.

Google PageSpeed Insights – co mówi wynik, jak go czytać

PageSpeed Insights podaje osobne wyniki dla mobile i desktop w skali 0-100, gdzie zielony to 90-100, pomarańczowy 50-89, czerwony 0-49. Sekcje raportu: „Field Data” z CrUX (jeśli witryna ma wystarczający ruch), „Lab Data” z Lighthouse (zawsze dostępne), „Opportunities” z konkretnymi sugestiami i „Diagnostics” z technicznymi szczegółami. Mobilny PSI jest priorytetowy – Google używa wersji mobilnej do rankingu (mobile-first indexing), a throttling 4× CPU + 3G symuluje warunki realnego użytkownika smartphone.

GTmetrix i WebPageTest – zaawansowana analiza waterfall

GTmetrix oferuje Performance Score (oparty na Lighthouse) i Structure Score, waterfall timeline z dokładnymi czasami każdego zasobu, testowanie z Vancouver w darmowym planie i 22 lokalizacji w płatnym (od 14,95 USD/mies.). WebPageTest pozwala testować z lokalizacji Polska, Niemcy, Czechy, generuje filmstrip view (klatka po klatce ładowania), umożliwia porównanie 2-9 runs side-by-side i zaawansowane ustawienia: 3G slow, 4G LTE, simulated mobile CPU. Dla sklepów obsługujących klientów z konkretnego kraju test z lokalizacji geograficznie bliskiej jest niezbędny.

Google Search Console (raport CWV) i CrUX – dane realnych użytkowników

Google Search Console w sekcji „Doświadczenie > Podstawowe wskaźniki internetowe” pokazuje agregowane dane field z CrUX dla witryny: podział na mobile/desktop, grupy URL z podobnymi problemami, trend 90 dni. CrUX zbiera dane z Chrome (>50% rynku przeglądarek), próg 75% sesji w zielonej strefie definiuje „dobry” wynik dla URL. Dla sklepów internetowych raport pozwala filtrować strony produktowe (/produkt/), kategorii (/kategoria/) i checkout – każda sekcja może wymagać innej optymalizacji.

Lighthouse – audyt wydajności w DevTools

Lighthouse w Chrome DevTools (zakładka Lighthouse) pozwala wykonać audyt lokalnie bez wysyłania URL do Google – przydatne dla stron za autentykacją lub środowisk staging. Audyt Performance generuje score 0-100, sześć metryk (FCP, LCP, TBT, CLS, Speed Index, TTI) oraz Opportunities i Diagnostics z konkretnymi rekomendacjami. Tryb Mobile stosuje throttling 4× slowdown CPU + Slow 4G (1,6 Mbps download), Desktop bez throttling. Lighthouse jest też dostępny jako CLI (npx lighthouse URL) i CI integration dla GitHub Actions.

Optymalizacja obrazów produktowych – WebP, AVIF i lazy loading

Obrazy stanowią zazwyczaj 60-70% wagi strony produktowej sklepu internetowego – konwersja do WebP/AVIF, kompresja i lazy loading to najszybciej zwracające się optymalizacje skracające czas ładowania o 40-60%. Cel rozmiaru pojedynczego obrazu produktowego: poniżej 200 KB dla zdjęcia hero, poniżej 50 KB dla miniatury w siatce kategorii.

FormatKompresja vs JPEGWsparcie przeglądarek (2026)Zastosowanie
JPEGBaseline100%Fallback dla starych urządzeń
WebP-25% do -34%95%+Standard dla sklepów 2026
AVIF-50% vs JPEG90%+Premium quality, lepsze zdjęcia produktowe
PNG+30% vs JPEG100%Logo, ikony z przezroczystością

Optymalizacja obrazów produktowych w sklepie internetowym wymaga trzech kroków: kompresji (lossy/lossless), konwersji do nowoczesnych formatów (WebP, AVIF) oraz strategii ładowania (lazy loading, srcset). Dla sklepu z 5000 produktów × 5 zdjęć/produkt = 25 000 obrazów, manualna optymalizacja jest niemożliwa – automatyzacja przez moduł CMS lub CDN z transformacją on-the-fly jest standardem.

Konwersja do WebP i AVIF – narzędzia i automatyzacja

WebP ma wsparcie 95%+ przeglądarek (od Safari 14, iOS 14), AVIF osiągnął 90%+ w 2025 roku – oba formaty można serwować z fallback do JPEG przez tag <picture>. Narzędzia konwersji: Squoosh (online, drag&drop), cwebp CLI (Google), Sharp (Node.js, batch), ImageMagick. Automatyzacja przez CDN: Cloudflare Polish (auto-WebP/AVIF), Cloudinary (f_auto), imgix, Bunny.net Optimizer. WooCommerce wtyczki: Imagify (5GB/mies. free), ShortPixel (100 obrazów free), EWWW Image Optimizer. PrestaShop: moduły WebP w Module Marketplace.

Lazy loading dla galerii produktowych i stron kategorii

Native HTML5 lazy loading (<img loading="lazy">) ma wsparcie 95%+ przeglądarek od 2020 roku – przeglądarka opóźnia ładowanie obrazów poza viewport do momentu zbliżenia się do nich. Krytyczna zasada: NIE stosować lazy loading do elementu LCP (zdjęcie hero w pierwszym viewport) – opóźni to LCP o 200-500 ms. Dla zaawansowanych przypadków (parallax, infinite scroll) używaj IntersectionObserver API. WooCommerce ma natywne lazy loading od WordPress 5.5, PrestaShop 1.7+ wspiera natywnie. Efekt na stronie kategorii z 100 miniaturami: skrócenie TTI o 1-3 s.

Responsive images i srcset – serwowanie odpowiednich rozmiarów

Atrybuty srcset i sizes informują przeglądarkę, który rozmiar obrazu pobrać dla danego viewport – błąd serwowania obrazu 2000 px na telefon 375 px to 80% zmarnowanego transferu. WordPress generuje automatycznie 5 rozmiarów (thumbnail, medium, medium_large, large, full) i wstawia poprawny srcset. PrestaShop ma generator miniatur w panelu admina (Konfiguracja > Obrazy). CDN z transformacją on-the-fly (Cloudinary w_400,f_auto,q_auto) eliminuje konieczność manualnego generowania – parametry URL definiują rozmiar i format.

Cache w sklepie internetowym – strategie od browser cache do Redis

Cache w sklepie internetowym działa na kilku poziomach od pamięci przeglądarki po Redis i Varnish Cache – prawidłowa hierarchia cache może skrócić TTFB z 800 ms do poniżej 100 ms. Wyzwanie e-commerce: dynamiczne treści (koszyk, zalogowany użytkownik, ceny promocyjne) wymagają strategii cache invalidation, która nie podawałaby zalogowanemu użytkownikowi A koszyka użytkownika B.

Poziom cacheLokalizacjaCzas trwaniaCo cachuje
Browser cachePrzeglądarkaDni-rokCSS, JS, obrazy, fonts
CDN cacheEdge serweryMinuty-godzinyStatyczne zasoby, HTML public
Full Page CacheSerwer (Varnish/Nginx)Minuty-godzinyStrony anonimowe
Object cacheRAM serwera (Redis)Minuty-dniWyniki SQL, sesje
OPcacheRAM serwera (PHP)Per restartSkompilowany bytecode PHP

Hierarchia cache w sklepie internetowym powinna być warstwowa: każde żądanie HTTP najpierw trafia do CDN (cache hit = brak obciążenia origin), następnie do Full Page Cache (cache hit = brak PHP), potem do Object Cache (cache hit = brak SQL), na końcu do bazy danych. Cache invalidation musi działać przy: aktualizacji produktu, zmianie ceny, dodaniu zamówienia, edycji zawartości CMS.

Browser cache – co i na jak długo cachować

Browser cache kontroluje się nagłówkami Cache-Control i Expires – statyczne zasoby (CSS, JS, obrazy, fonts) powinny mieć max-age=31536000 (1 rok) z content hashing w nazwie pliku (style.a4f9e2.css) dla cache busting przy aktualizacji. HTML stron sklepu: max-age=0, no-cache lub krótkie wartości (5-60 min) z s-maxage dla CDN. Konfiguracja: .htaccess (Apache mod_expires), nginx.conf (expires 1y;). Weryfikacja w DevTools > Network > Response Headers.

Object cache: Redis i Memcached dla platform e-commerce

Object cache przechowuje wyniki zapytań PHP/SQL w pamięci RAM, eliminując powtórne odpytywanie bazy danych – Redis vs Memcached: Redis jest persystentny, obsługuje złożone struktury danych (lists, sets, hashes) i jest standardem dla nowoczesnego e-commerce. WooCommerce: plugin „Redis Object Cache” Till Krüssa (darmowy, 1M+ instalacji). PrestaShop: konfiguracja Memcached/Redis w Zaawansowane > Wydajność. Magento 2: natywne wsparcie Redis dla session storage i default cache. Efekt wdrożenia: TTFB redukcja o 50-80%.

Full Page Cache – Varnish dla Magento i dynamiczne treści

Full Page Cache (FPC) cachuje gotową odpowiedź HTML, eliminując PHP rendering – Varnish Cache to reverse proxy oficjalnie wspierany przez Magento 2 jako rekomendowany FPC. Mechanizm „hole punching” przez ESI (Edge Side Includes) wyłącza dynamiczne fragmenty (mini-koszyk, dane zalogowanego użytkownika) z cache, podczas gdy reszta strony jest serwowana z Varnish. Dla WooCommerce/PrestaShop alternatywą jest Nginx FastCGI Cache lub WP Rocket. Wdrożenie Varnish skraca TTFB do 30-50 ms dla cached pages.

CDN – Content Delivery Network i gdy go potrzebujesz

CDN (Content Delivery Network) to rozproszona sieć serwerów brzegowych (PoP) blisko użytkownika końcowego – cachują statyczne zasoby (obrazy, CSS, JS) i serwują z najbliższej lokalizacji. Kiedy CDN ma sens: sklep obsługuje >1 kraj, duży udział obrazów, sezonowe peaki ruchu. Dostawcy: Cloudflare (darmowy plan, 300+ PoP, automatyczny WebP/Brotli), Bunny.net (pay-per-use od 0,01 USD/GB), KeyCDN, AWS CloudFront. CDN nie zastąpi wolnego origin TTFB – cache statycznych zasobów nie pomaga, jeśli sam HTML generuje się 2 sekundy.

Optymalizacja zasobów front-end – minifikacja, JavaScript i CSS

Nieoptymalizowany JavaScript blokuje renderowanie sklepu internetowego – minifikacja, defer/async i usunięcie zbędnych skryptów third-party mogą poprawić LCP o 0,5-2 sekundy. Ścieżka krytyczna renderowania: przeglądarka parsuje HTML, napotyka <link> CSS (blokuje render), napotyka <script> (blokuje parsing) – każdy blokujący zasób opóźnia first paint o 50-500 ms.

OptymalizacjaŚredni efektTrudność wdrożenia
Minifikacja CSS/JS-20-30% rozmiaruNiska (wtyczki)
Brotli compression-15-25% transferuNiska (konfig serwera)
Defer/async JS-200-800 ms LCPŚrednia (audyt)
Critical CSS inline-300-700 ms FCPWysoka (build process)
Usunięcie third-party-500-2000 ms TBTŚrednia (decyzja biznesowa)

Optymalizacja front-end sklepu internetowego wymaga audytu: ile bajtów JS jest niewykorzystanych (DevTools Coverage tab pokazuje zazwyczaj 50-70%), które skrypty third-party są render-blocking, które style CSS są krytyczne dla above-the-fold. Cel: rozmiar HTML <100 KB, CSS <50 KB, JS <300 KB (skompresowane).

Minifikacja i łączenie plików CSS/JS

Minifikacja usuwa whitespace, komentarze, skraca nazwy zmiennych – narzędzia: Terser (JS), CSSNano, HTMLMinifier. Łączenie plików redukuje liczbę żądań HTTP, ale w erze HTTP/2 ma mniejsze znaczenie (multiplexing). WooCommerce: WP Rocket (49 USD/rok, automatyczna minifikacja + cache + CDN), Autoptimize (darmowy). PrestaShop: Back Office > Zaawansowane > Wydajność > CCC (Combine, Compress and Cache). Magento 2: bin/magento setup:static-content:deploy -f w trybie produkcyjnym, włącz minify w config.xml.

Critical CSS i render-blocking resources

Critical CSS to inline style dla above-the-fold treści w <head> – reszta CSS ładowana asynchronicznie przez rel="preload". Identyfikacja w PageSpeed Insights: „Eliminate render-blocking resources”. Narzędzia generujące critical CSS: Critical (npm package), Penthouse, automatyzacja w buildzie Webpack/Vite. Async loading reszty CSS: <link rel="preload" href="style.css" as="style" onload="this.rel='stylesheet'">. Efekt: redukcja FCP o 300-700 ms.

Skrypty zewnętrzne (third-party) – audyt i defer/async

Skrypty zewnętrzne są największym źródłem render-blocking resources w sklepach internetowych – typowi sprawcy: Facebook Pixel, Google Tag Manager (gdy zawiera 20+ tagów), Hotjar, LiveChat, chatboty, narzędzia A/B testing. Audyt: Ghostery rozszerzenie pokazuje wszystkie trackery, Coverage tab w DevTools wskazuje % nieużywanego JS. Techniki: defer (parsowanie po DOM), async (asynchronicznie, kolejność niezdefiniowana), facade pattern (placeholder zamiast widget, ładuje się po kliknięciu – np. YouTube embed). Efekt audytu: typowo 500-2000 ms oszczędności.

Kompresja Brotli i Gzip

Gzip to standard od 1990s kompresujący tekst (HTML, CSS, JS) o około 70%, Brotli to nowszy algorytm Google dający dodatkowe 15-30% kompresji vs Gzip – wymaga HTTPS. Konfiguracja Nginx: brotli on; brotli_comp_level 6; brotli_types text/css application/javascript;. Apache: mod_brotli z BrotliCompressionQuality 6. Cloudflare automatycznie aplikuje Brotli dla proxowanych zasobów. Weryfikacja: curl -I -H "Accept-Encoding: br" https://sklep.pl powinno zwrócić content-encoding: br.

Hosting i infrastruktura serwera a prędkość sklepu internetowego

Hosting to fundament prędkości sklepu internetowego – migracja ze shared hostingu na VPS może sama w sobie skrócić TTFB z 800 ms do poniżej 200 ms bez żadnych zmian w kodzie. Wybór hostingu wpływa na wszystkie pozostałe optymalizacje: object cache wymaga dedykowanego RAM, Varnish wymaga dostępu root, PHP 8.2 wymaga konfigurowalnej wersji.

Typ hostinguTTFB (typowy)Cena/mies.Dla jakiego sklepu
Shared hosting600-2000 ms10-50 złStartup <1000 zamówień/mies.
VPS (Hetzner, OVH)100-300 ms50-200 złSklep 1000-50 000 zamówień
Serwer dedykowany50-150 ms300-1000 złDuży sklep, >50 000 zamówień
Chmura (AWS, GCP)50-200 msZmienneEnterprise, elastyczność

Hosting dla sklepu internetowego musi spełniać minimum techniczne: PHP 8.1+ z OPcache, PHP-FPM process manager, MySQL 8.0+ lub MariaDB 10.6+, dyski SSD NVMe (nie HDD ani SATA SSD), HTTP/2 lub HTTP/3, Brotli compression, dostęp do konfiguracji Nginx/Apache. Decyzja o hostingu powinna poprzedzać optymalizacje front-end – wolny serwer sprawia, że kompresja obrazów daje minimalną poprawę.

Shared hosting vs. VPS vs. serwer dedykowany – porównanie dla e-commerce

Shared hosting dzieli zasoby CPU/RAM między setki klientów – „noisy neighbour” effect oznacza, że sąsiad uruchamiający backup w południe spowalnia twój sklep. VPS (Virtual Private Server) ma dedykowane vCPU i RAM, pełną kontrolę nad konfiguracją: Hetzner Cloud (od 4,5 EUR/mies. za 2 vCPU + 4GB RAM), OVH VPS, DigitalOcean Droplet. Serwer dedykowany ma sens przy >50 000 wizyt/dzień (>1500 zamówień/mies.). Chmura (Hetzner Cloud, AWS) oferuje elastyczny scaling – autoscaling przed Black Friday +200% mocy, redukcja po sezonie.

Lokalizacja serwera i latencja – wpływ na TTFB

Latencja sieciowa to czas propagacji sygnału – około 1 ms na 200 km. Sklep dla polskich klientów: serwer w Polsce (OVH Warszawa, Beyond.pl Poznań) lub Niemczech (Hetzner Frankfurt) daje latencję 5-20 ms. Serwer w US-East dodaje 100-150 ms latencji do TTFB dla każdego polskiego użytkownika. Test lokalizacji: WebPageTest z Berlin/Warsaw vs. Virginia, porównanie TTFB. CDN cachuje statyczne zasoby blisko użytkownika, ale nie eliminuje latencji do origin dla dynamicznego HTML – to jest kluczowy bottleneck dla SaaS sklepów hostowanych za oceanem.

PHP 8.x – dlaczego wersja PHP ma znaczenie

PHP 8.2 jest 2-3× szybszy niż PHP 7.4 dla typowych workloadów WooCommerce (testy Kinsta z 2023). OPcache kompiluje PHP do bytecode i przechowuje w pamięci – bez OPcache każde żądanie wymaga ponownego parsowania plików PHP. PHP-FPM (FastCGI Process Manager) zarządza pulą procesów workerów – pool z 20 workerami obsługuje 20 jednoczesnych żądań. Sprawdzenie wersji: php -v w SSH, w cPanel/Plesk panel administracyjny. Wymagania platform: WooCommerce 8.x wymaga PHP 8.0+, Magento 2.4.6+ wymaga PHP 8.2.

Baza danych – optymalizacja MySQL i indeksy dla dużych katalogów

Optymalizacja bazy danych w sklepie internetowym z dużym katalogiem (>10 tys. produktów) wymaga indeksów na często filtrowanych kolumnach: product_id, category_id, sku, stock_status. EXPLAIN przed SELECT identyfikuje full table scan (type=ALL = problem). Defragmentacja tabel: OPTIMIZE TABLE wp_posts;. WooCommerce: WP-Optimize plugin czyści wersje postów, transient cache, expired sessions. PrestaShop: wyłącz logowanie SQL (_PS_DEBUG_SQL_=false) na produkcji. Magento 2: partial reindex w cron (bin/magento indexer:reindex) zamiast full reindex co godzinę.

Optymalizacja platform e-commerce – WooCommerce, PrestaShop, Magento, Shoper, IdoSell

Każda platforma e-commerce ma specyficzne wąskie gardła – WooCommerce potrzebuje object cache Redis i PHP 8.2, PrestaShop wymaga Smarty cache i optymalizacji SQL, a Magento 2 wymaga stosu Varnish + Redis dla osiągnięcia LCP poniżej 2,5 s. Optymalizacja prędkości sklepu internetowego per platforma wymaga znajomości jej architektury cache i typowych pluginów wydajnościowych.

PlatformaŚredni czas ładowaniaKluczowe wyzwaniaStack rekomendowany
WooCommerce3,0-3,5 sNadmiar wtyczek, wolna baza WordPressRedis Object Cache, PHP 8.2, WP Rocket
PrestaShop2,8-3,2 sNadmiar modułów, niezoptymalizowane SQLSmarty cache (fs), CCC, MySQL indeksy
Magento 23,5-4,0 sZłożona architektura, ciężkie JSVarnish + Redis + PHP-FPM 8.2
Shoper2,0-2,5 sOgraniczone możliwości backendu (SaaS)Optymalizacja obrazów, min. skryptów
IdoSell2,0-2,5 sOgraniczone możliwości konfiguracjiOptymalizacja obrazów, IAI Cache

Wybór platformy e-commerce determinuje sufit prędkości – SaaS (Shoper, IdoSell) ma niski sufit konfiguracji, ale dobrą bazę „out of the box”. Self-hosted (WooCommerce, PrestaShop, Magento) wymaga kompetencji DevOps, ale pozwala osiągnąć LCP poniżej 1,5 s przy odpowiednim stacku.

WooCommerce – wybór hostingu, object cache, konfiguracja wtyczek

WooCommerce wymaga managed hostingu (Kinsta, SiteGround) lub VPS z minimum 2 vCPU + 4 GB RAM dla sklepu z 1000+ zamówień/miesiąc. Stack rekomendowany: PHP 8.2 + OPcache (64 MB+), Redis Object Cache (plugin Till Krüss), WP Rocket (49 USD/rok) lub LiteSpeed Cache (darmowy, wymaga LSWS). Audyt wtyczek przez Query Monitor – każda wtyczka dodaje 5-50 ms TTFB, sklep z 50 wtyczkami = 500-2500 ms tylko z PHP. Czyszczenie: WP-Optimize usuwa wersje postów, expired transients, spam komentarze. Wymaganie: limit 30-40 wtyczek, audyt co 6 miesięcy.

PrestaShop – Smarty cache, kompresja zasobów, optymalizacja SQL

PrestaShop w panelu Back Office > Zaawansowane > Wydajność oferuje natywne narzędzia: Smarty cache w trybie „file system” (nie APC), CCC (Combine, Compress and Cache) dla CSS i JS, kompresja Apache/Nginx. Tryb deweloperski (_PS_MODE_DEV_=true) MUSI być wyłączony na produkcji – dodaje 200-500 ms per request. Moduły: wyłączenie nieużywanych w Module Manager, audyt poprzez stopwatch w trybie debug. SQL: indeksy na id_product, id_category, reference. Object cache: moduły Memcached/Redis w PrestaShop Addons Marketplace. Optymalizacja prędkości PrestaShop redukuje TTFB z 1500 ms do 300 ms.

Magento 2 – Varnish, Redis, Full Page Cache, optymalizacja indeksacji

Magento 2 wymaga production stack: Varnish 7.x jako Full Page Cache, Redis dla session storage i default cache, Nginx + PHP-FPM 8.2 + OPcache 256 MB. Konfiguracja w app/etc/env.php: cache > frontend > default > backend = Cgi\Redis i session > save = redis. Deployment produkcyjny: bin/magento deploy:mode:set production, bin/magento setup:di:compile, bin/magento setup:static-content:deploy -f pl_PL en_US. Reindeksacja: cron z partial index (bin/magento indexer:set-mode schedule), nie full reindex. Magento Cloud (Adobe Commerce on Cloud) ma wbudowane Varnish + Redis + Fastly CDN.

Shoper i IdoSell – możliwości optymalizacji w SaaS

Shoper i IdoSell to SaaS – hosting i cache zarządzane przez platformę, brak dostępu do serwera. Optymalizacja prędkości sklepu internetowego ogranicza się do warstwy contentu i frontendu: przesyłanie obrazów już skompresowanych do WebP (platforma akceptuje), minimalizacja skryptów zewnętrznych (Google Tag Manager max 3-5 tagów), wyłączenie nieużywanych bloków/widgetów w szablonie. Shoper: Panel admina > Konfiguracja > Wydajność. IdoSell: konfiguracja IAI Cache, optymalizacja feedów produktowych, lazy loading w szablonie. Sufit SaaS: LCP około 2-2,5 s przy dobrej konfiguracji – lepsze wyniki wymagają migracji na self-hosted.

Mobile-first optymalizacja prędkości sklepu

76% Polaków kupuje przez telefon, a 53% opuszcza sklep mobilny ładujący się ponad 3 sekundy – wynik mobilny w PSI jest priorytetowy, bo Google indeksuje wersję mobilną jako główną. Mobile-first optymalizacja prędkości sklepu wymaga testowania w realistycznych warunkach (3G slow, 4× CPU throttling), a nie tylko na 1 Gbps Wi-Fi z desktop CPU.

Wskaźnik mobilnyWartośćŹródło
Udział m-commerce w PL76%Trusted Shops 2024
Bounce rate przy >3 s53%Think with Google
Wzrost CR przy +1 s szybciej+27%Deloitte Milliseconds Make Millions
Spadek bounce przy +1 s szybciej-36%Deloitte 2020
Mobile-first indexingOd 2023Google

Mobile-first oznacza priorytet mobilnego LCP/INP/CLS w Google Search Console nad desktop, mobile PSI score jako wyznacznik problemów oraz testowanie na realnych urządzeniach. Throttling w DevTools symuluje, ale nie odwzorowuje thermal throttling telefonu po 5 minutach intensywnego użycia.

Statystyki i mobile-first indexing

Mobile-first indexing Google używa wersji mobilnej witryny do crawlowania, indeksowania i rankingu – od lipca 2024 wszystkie strony są indeksowane mobile-first (transformacja zakończona). PSI mobile stosuje throttling: 4× CPU slowdown (symulacja Moto G4), Slow 4G (1,6 Mbps download, 750 Kbps upload, 150 ms RTT). Dane Trusted Shops 2024: 76% polskich e-shopperów kupuje przez smartphone, 22% przez desktop, 2% tablet. Dane Deloitte „Milliseconds Make Millions”: strony +1 s szybciej generują +27% konwersji i -36% bounce rate.

Testowanie na realnych urządzeniach vs. DevTools

Throttling DevTools to symulacja – nie odwzorowuje thermal throttling, baterii, limitów GPU. Realne testy: BrowserStack (real device cloud, 2000+ urządzeń), WebPageTest z wyborem Moto G4 lub Pixel 3a, własny smartphone na 4G LTE (nie domowe Wi-Fi). Różnice mogą wynosić 30-100% w LCP – obserwowano sklepy z PSI mobile 85, ale realnym LCP 4 s na 2-letnim Samsung Galaxy A. Google Search Console w raporcie CWV pokazuje field data z realnych użytkowników mobilnych, podzielone na URL groups – to ostateczny wskaźnik, nie wynik laboratoryjny.

Monitoring i utrzymanie prędkości sklepu – przed i po sezonach sprzedażowych

Prędkość sklepu internetowego degraduje się po każdej aktualizacji wtyczki, nowym module czy kampanii marketingowej – stały monitoring z alertami i load test przed Black Friday są niezbędne. Średnio sklep WooCommerce po 12 miesiącach bez audytu ma o 30-50% wolniejszy TTFB niż w dniu wdrożenia (kumulacja transients, wersji postów, nowych wtyczek).

Metoda monitoringuTyp danychCzęstotliwośćNarzędzia
RUM (Real User Monitoring)FieldCiągłyCrUX, SpeedCurve, Datadog
Synthetic monitoringLabCo 5-60 minUptimeRobot, GTmetrix Monitoring
Manual audytLabTygodniowo/miesięczniePSI, Lighthouse
Load testingLabPrzed peakk6, JMeter, Gatling
GSC CWV reportFieldTygodniowoGoogle Search Console

Monitoring prędkości sklepu internetowego to dwie warstwy: ciągły (RUM dla problemów u realnych użytkowników) i okresowy (synthetic + load testing przed peakami). Alerty powinny włączać się przy: LCP >2,5 s dla >10% sesji, TTFB >800 ms przez >5 min, error rate >1%.

Ciągłe monitorowanie – alerty i Real User Monitoring (RUM)

Real User Monitoring zbiera dane od realnych użytkowników przez JavaScript snippet – CrUX (darmowe, dane z Chrome), SpeedCurve (od 30 USD/mies., dashboard CWV), Datadog RUM, New Relic Browser. RUM pokazuje 75-percentyl LCP per kraj, urządzenie, typ strony – krytyczne dla zidentyfikowania, że strona checkout ma LCP 4 s na iPhone, podczas gdy strona główna ma 1,5 s. Alerty Slack/email przy degradacji: SpeedCurve, Datadog, Calibre. Google Search Console cotygodniowy przegląd raportu Core Web Vitals – bezpłatny i wystarczający dla 90% sklepów.

Load testing przed Black Friday i wyprzedażami sezonowymi

Load testing symuluje wzmożony ruch przed sezonami sprzedażowymi – k6 (open-source, JavaScript) jest standardem dla scenariuszy e-commerce, alternatywy: Apache JMeter (Java GUI), Gatling (Scala). Scenariusz dla sklepu: 500-2000 concurrent users, czas trwania 15 min, ścieżka strona główna -> kategoria -> produkt -> dodaj do koszyka -> checkout. Metryki: TTFB pod obciążeniem, p95 response time (95% requestów <1 s), error rate (cel <1%). Cel: brak degradacji >20% vs normalny ruch. Timing: minimum 4 tygodnie przed Black Friday – czas na naprawę wąskich gardeł (skalowanie hostingu, optymalizacja DB queries).

FAQ – najczęstsze pytania o prędkość sklepu internetowego

Jak przyspieszyć ładowanie stron internetowych?

Najpierw zmierz wynik w PageSpeed Insights i zidentyfikuj największy problem – zazwyczaj są to nieskompresowane obrazy lub render-blocking skrypty zewnętrzne. Następnie wdróż cache (browser cache + object cache Redis), skompresuj obrazy do WebP/AVIF i włącz lazy loading dla obrazów poza viewport.

Jaka jest dobra prędkość witryny?

Sklep internetowy powinien ładować się poniżej 2-3 sekund. Google rekomenduje LCP poniżej 2,5 s jako próg „dobrego” wyniku Core Web Vitals – sklep z LCP poniżej 2 s ma przewagę konkurencyjną w SERP i konwersji.

Jak sprawdzić prędkość ładowania strony?

Użyj Google PageSpeed Insights (wpisz URL w pagespeed.web.dev), GTmetrix lub WebPageTest. PSI jest darmowy i pokazuje wyniki dla mobile i desktop wraz z konkretnymi rekomendacjami w sekcjach Opportunities i Diagnostics.

Od jakiej mocy jest szybkie ładowanie?

W kontekście LCP: poniżej 2,5 s to „dobry” wynik wg Google. Poniżej 2 s dla sklepu internetowego oznacza przewagę konkurencyjną – większość sklepów w Polsce mieści się w przedziale 2,5-4 s na mobile.

Ile sekund powinien ładować się sklep internetowy?

Cel to LCP poniżej 2 s, akceptowalny próg to 2,5 s. Powyżej 3 s sklep traci 53% użytkowników mobilnych (Think with Google), a Google obniża pozycję w rankingu przez sygnał Core Web Vitals.

Co to jest LCP, INP i CLS?

To trzy wskaźniki Core Web Vitals: LCP (Largest Contentful Paint) mierzy czas ładowania głównej treści, INP (Interaction to Next Paint) mierzy responsywność kliknięć, CLS (Cumulative Layout Shift) mierzy stabilność layoutu podczas ładowania. Progi „dobre”: LCP <2,5 s, INP <200 ms, CLS <0,1.

Czy wynik PageSpeed Insights wpływa na ranking Google?

Nie bezpośrednio – Google używa danych field z CrUX (realni użytkownicy Chrome), nie laboratoryjnego wyniku PSI. Wysoki wynik PSI zwykle koreluje z dobrymi Core Web Vitals, ale ostateczna ocena dla rankingu pochodzi z 28-dniowych danych realnych użytkowników w Google Search Console.

Jak cache wpływa na prędkość sklepu WooCommerce?

Object cache Redis może skrócić TTFB o 50-80% przez cachowanie wyników zapytań SQL w pamięci RAM. WP Rocket lub LiteSpeed Cache automatyzują konfigurację Full Page Cache + browser cache + minifikacji CSS/JS bez znajomości serwera.

Czy CDN przyspiesza sklep internetowy?

Tak, dla statycznych zasobów (obrazy, CSS, JS) – Cloudflare, Bunny.net czy KeyCDN serwują pliki z serwera brzegowego najbliższego użytkownikowi. CDN nie przyspieszy wolnego TTFB serwera origin – jeśli dynamiczny HTML generuje się 2 s, CDN tylko cachuje statykę.

Jaki hosting wybrać dla sklepu internetowego?

VPS (Hetzner Cloud od 4,5 EUR/mies., OVH VPS) to minimum dla sklepów z regularnym ruchem 1000+ zamówień/miesiąc. Shared hosting powoduje nieprzewidywalny TTFB (600-2000 ms) przez „noisy neighbour” effect i nie pozwala na konfigurację Redis/Varnish.

Dlaczego sklep ładuje się wolno na mobile?

Najczęstsze przyczyny: wolna sieć komórkowa (3G/4G ma RTT 50-200 ms vs Wi-Fi 5-10 ms), throttling CPU telefonu (4× wolniejszy od desktop), zbyt duże obrazy (brak srcset), zbyt wiele skryptów JavaScript blokujących renderowanie. Mobile-first optymalizacja wymaga testów na realnych urządzeniach przez WebPageTest lub BrowserStack.

Łukasz Tarabuła

Pasjonat e-commerce z ponad dziesięcioletnim doświadczeniem w branży. Ekspert w optymalizacji procesów sprzedażowych i budowaniu strategii online. Na swoim blogu dzieli się praktycznymi poradami, najnowszymi trendami oraz sprawdzonymi metodami na zwiększenie zysków w handlu internetowym. Prywatnie miłośnik technologii i aktywnego stylu życia.