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 sINP poniżej 200 msCLS 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 (LCPINPCLS) 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 AVIFCDN 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 InsightsGTmetrixWebPageTest 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 (WebPAVIF) oraz strategii ładowania (lazy loadingsrcset). 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 (thumbnailmediummedium_largelargefull) 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), CSSNanoHTMLMinifier. Łą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 6Cloudflare 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 OPcachePHP-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_idcategory_idskustock_statusEXPLAIN 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_productid_categoryreference. 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.phpcache > frontend > default > backend = Cgi\Redis i session > save = redis. Deployment produkcyjny: bin/magento deploy:mode:set productionbin/magento setup:di:compilebin/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 VitalsLCP (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.