Najważniejsze informacje:
Wydajność sklepu zależy głównie od konfiguracji serwera, zarządzania modułami i skryptami oraz ruchu na stronie
Core Web Vitals (LCP, INP, CLS) to kluczowe metryki Google do oceny doświadczenia użytkownika
Prawidłowa konfiguracja CCC i cache może skrócić czas ładowania nawet o 50%
Nieoptymalne moduły generują setki zbędnych zapytań SQL spowalniających sklep
Format WebP redukuje wagę grafik o 40-50% przy zachowaniu jakości
W tym artykule poznasz sprawdzone metody optymalizacji PrestaShop - od podstawowego audytu Core Web Vitals, przez zaawansowaną konfigurację techniczną, aż po optymalizację kodu front-end i skalowalność SEO.
Audyt Podstawowy i Wskaźniki Core Web Vitals (CWV)
Core Web Vitals to trzy kluczowe metryki Google mierzące rzeczywiste doświadczenia użytkowników: LCP ocenia szybkość ładowania głównej treści, INP sprawdza responsywność interfejsu, a CLS weryfikuje stabilność wizualną strony.
Zanim zaczniesz jakąkolwiek optymalizację PrestaShop, musisz dokładnie zdiagnozować aktualny stan wydajności. Core Web Vitals to nie tylko techniczne wskaźniki - to bezpośredni miernik tego, jak użytkownicy odbierają Twój sklep.
Czym są Core Web Vitals i dlaczego są kluczowe?
Largest Contentful Paint (LCP) mierzy czas, w jakim największy element treści staje się widoczny dla użytkownika. Google uznaje wartość poniżej 2.5 sekundy za dobrą dla 75% odwiedzin. W praktyce oznacza to moment, kiedy użytkownik widzi główny produkt, baner promocyjny lub kluczowy element strony.
Interaction to Next Paint (INP) zastąpił starszą metrykę FID i mierzy całkowitą responsywność strony. Sprawdza, jak szybko interfejs reaguje na wszystkie interakcje użytkownika - od kliknięcia w menu, przez dodanie produktu do koszyka, po nawigację między stronami. Dobry wynik to wartość poniżej 200 ms.
Cumulative Layout Shift (CLS) to miara stabilności wizualnej. Każde nieoczekiwane przesunięcie elementów strony - na przykład gdy tekst "skacze" w dół po załadowaniu się obrazu - zwiększa CLS. Wartość poniżej 0.1 uznawana jest za dobrą.
Narzędzia diagnostyczne i tryb profilowania
Page Speed Insights to podstawowe narzędzie, które pokazuje wyniki Core Web Vitals zarówno w warunkach laboratoryjnych (Lighthouse), jak i rzeczywistych danych użytkowników (Chrome UX Report). Nie poprzestań jednak na tym narzędziu.
Tryb debugowania z profilowaniem w PrestaShop ( _PS_DEBUG_PROFILING_ ) to zaawansowana funkcja developerska, która pokazuje dokładny czas wykonania każdej operacji na stronie. Aktywujesz ją w pliku config/defines.inc.php :
php
define('_PS_DEBUG_PROFILING_', true);
Po odświeżeniu strony zobaczysz na dole szczegółową tabelę z podziałem na moduły, zapytania SQL i czas ich wykonania. To narzędzie pozwala precyzyjnie wskazać "wąskie gardło" w wydajności.
Insight: Profiler jako detektyw wydajności
Profiler PrestaShop często ujawnia zaskakujące źródła problemów. W jednym ze sklepów z 200 produktami, moduł "niedawno oglądane" generował 150 zapytań SQL przy każdym odświeżeniu strony. Po jego wyłączeniu, TTFB spadł z 3.2s do 0.8s - bez żadnych innych zmian.
Jak interpretować wyniki audytu?
Kiedy spojrzysz na wyniki Page Speed Insights, szukaj konkretnych problemów blokujących renderowanie: niezoptymalizowane obrazy powyżej 500KB, JavaScript blokujący parsowanie HTML, brak Critical CSS. Każdy z tych problemów ma swoje rozwiązanie, które omówimy w kolejnych sekcjach.
Pamiętaj, że wynik 100/100 w Page Speed Insights nie jest celem samym w sobie. Często osiągnięcie 90+ wymaga kompromisów funkcjonalnych, które mogą negatywnie wpłynąć na doświadczenie użytkownika. Skup się na mierzalnych efektach biznesowych: czasie ładowania strony, współczynniku odrzuceń i konwersji.
Optymalizacja Konfiguracyjna w Panelu Administracyjnym (CCC i Cache)
Prawidłowa konfiguracja CCC (Combine, Compress, Cache) i systemu pamięci podręcznej to pierwszy krok do znacznego przyspieszenia PrestaShop - często redukując czas ładowania o 40-60% bez ingerencji w kod.
Większość właścicieli sklepów PrestaShop nie zdaje sobie sprawy, że kluczowe opcje wydajnościowe znajdują się w standardowym panelu administracyjnym. Nie potrzebujesz programisty, żeby uruchomić podstawowe mechanizmy optymalizacji.
Aktywacja i testowanie funkcjonalności CCC
Przejdź do Parametry Zaawansowane → Wydajność w back office. Znajdziesz tam sekcję CCC z kilkoma kluczowymi przełącznikami.
Smart cache dla CSS łączy wszystkie pliki arkuszy stylów w jeden plik i minimalizuje go, usuwając zbędne spacje i komentarze. To samo dotyczy Smart cache dla JavaScript - wszystkie skrypty JS są scalane i kompresowane. Redukuje to liczbę żądań HTTP i zmniejsza całkowity rozmiar przesyłanych danych.
Minifikacja HTML usuwa komentarze i zbędne znaki z kodu HTML strony. Oszczędność może wynieść 10-20% rozmiaru dokumentu.
Opcja Przenieś JavaScript na koniec strony jest szczególnie ważna dla poprawy LCP. Przeglądarki muszą pobrać, sparsować i wykonać każdy plik JavaScript przed kontynuowaniem renderowania strony. Przeniesienie skryptów na koniec pozwala najpierw załadować treść widoczną dla użytkownika.
Po włączeniu wszystkich opcji CCC kliknij "Wyczyść cache" i przetestuj sklep. Sprawdź każdą kluczową stronę : główną, kategorię, kartę produktu, koszyk, checkout. Niektóre moduły mogą źle reagować na łączenie plików - jeśli zauważysz błędy JavaScript w konsoli przeglądarki, musisz albo naprawić kod modułu, albo dodać wyjątek dla konkretnego pliku.
Konfiguracja wewnętrznej pamięci podręcznej
W tej samej sekcji znajdziesz opcję Użyj cache . Powinieneś ją włączyć i wybrać odpowiedni system przechowywania.
System Plików to domyślna opcja, która zapisuje cache w katalogach na dysku serwera. Działa niezawodnie, ale ma ograniczenia wydajnościowe przy dużym ruchu - każde odczytanie danych wymaga operacji dyskowej.
Memcached to system pamięci podręcznej działający w RAM serwera. Dane są dostępne praktycznie natychmiast, bez opóźnień związanych z dostępem do dysku. Wymaga jednak zainstalowania i skonfigurowania serwera Memcached na hostingu.
Redis to nowsza i bardziej zaawansowana alternatywa dla Memcached, oferująca dodatkowe funkcje jak persystencję danych i struktury danych. PrestaShop 8 i 9 oficjalnie wspierają Redis jako rekomendowany system cache.
Uwaga: Cache wymaga rozgrzewki
Po wyczyszczeniu cache, pierwszy użytkownik doświadczy powolnego ładowania - to moment, gdy PrestaShop generuje cache od nowa. W sklepach z dużym ruchem warto zaimplementować "wygrzewanie cache" - skrypt, który automatycznie odwiedza kluczowe strony po czyszczeniu cache, generując dane zanim dotrą tam prawdziwi użytkownicy.
Techniczne Zarządzanie Zasobami: Moduły, Kod i Baza Danych
Głębokie problemy wydajnościowe PrestaShop często tkwią w niewidocznych warstwach: zbędnych modułach generujących setki zapytań SQL, przeładowanej bazie danych i nieoptymalizowanych zasobach graficznych.
To najważniejsza sekcja tego przewodnika. Tutaj znajdziesz problemy, które generują największe obciążenie i których nie naprawisz prostym kliknięciem w panelu administracyjnym.
Kontrola obciążających modułów i aplikacji
Nieoptymalne moduły to najczęstsza przyczyna wolnego PrestaShop. Problem polega na tym, że moduł może wyglądać niewinnie - mały widget, statystyki, integracja - ale generować dziesiątki lub setki zapytań SQL przy każdym wyświetleniu strony.
Włącz tryb profilowania (o którym pisaliśmy w sekcji 1) i przeanalizuj tabelę na dole strony. Szukaj modułów z czasem wykonania powyżej 100ms lub z dużą liczbą zapytań SQL. Często jeden moduł odpowiada za 30-50% całkowitego czasu ładowania strony.
Kiedy już zidentyfikujesz problematyczny moduł, masz trzy opcje:
Dezaktywuj moduł - jeśli nie jest krytyczny dla funkcjonowania sklepu
Dodaj wyjątki - w ustawieniach modułu możesz wyłączyć go z konkretnych stron (np. wyłącz widget "bestsellery" ze strony checkout)
Zastąp lepszym rozwiązaniem - często istnieją alternatywne moduły wykonujące tę samą funkcję, ale zoptymalizowane pod kątem wydajności
Jak skutecznie wykorzystać wyjątki modułów?
W Back Office, w szczegółach każdego modułu, znajdziesz sekcję "Wyjątki". Możesz tam wyłączyć moduł z konkretnych kontrolerów (stron). Na przykład:
Moduły marketingowe (pop-upy, livechat, newslettery) nie są potrzebne na stronach checkout i koszyka
Widget "ostatnio oglądane" nie ma sensu na stronie głównej
Moduły statystyczne mogą być wyłączone dla wszystkich stron frontendowych
Dodanie wyjątków może zredukować obciążenie o 20-40% na kluczowych stronach konwersji, bez utraty funkcjonalności tam, gdzie jest ona potrzebna.
Metric: Rzeczywisty wpływ wyjątków modułów
W sklepie z branży fashion dodanie wyjątków dla 5 modułów na stronach product i checkout zmniejszyło liczbę zapytań SQL z 280 do 140 i skróciło TTFB z 1.8s do 0.9s. Współczynnik konwersji wzrósł o 12% w ciągu pierwszego miesiąca po optymalizacji.
Głębokie czyszczenie bazy danych
PrestaShop przechowuje ogromne ilości danych statystycznych: każde połączenie użytkownika, każde wyświetlenie strony, każdy porzucony koszyk. W sklepach działających kilka lat, tabele statystyczne mogą zawierać miliony rekordów, znacznie spowalniając zapytania.
Kluczowe tabele do czyszczenia:
ps_connections i ps_connections_source - przechowują historię połączeń użytkowników. Jeśli prowadzisz sklep od 3 lat, możesz mieć tam 5-10 milionów rekordów. Zapisane są tam dane o każdej wizycie w sklepie.
ps_guest - przechowuje informacje o gościach (użytkownikach niezalogowanych). Rośnie proporcjonalnie do ruchu.
ps_page_viewed - każde wyświetlenie każdej strony przez każdego użytkownika. To często największa tabela w całej bazie.
Przed czyszczeniem zrób backup bazy danych . Potem możesz wykonać zapytania SQL usuwające stare dane:
sql
-- Usuń połączenia starsze niż 6 miesięcy
DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 6 MONTH);
DELETE FROM ps_connections_source WHERE date_add < DATE_SUB(NOW(), INTERVAL 6 MONTH);
-- Usuń wyświetlenia stron starsze niż 3 miesiące
DELETE FROM ps_page_viewed WHERE date_add < DATE_SUB(NOW(), INTERVAL 3 MONTH);
-- Usuń porzucone koszyki starsze niż 1 miesiąc
DELETE FROM ps_cart WHERE date_add < DATE_SUB(NOW(), INTERVAL 1 MONTH) AND id_cart NOT IN (SELECT id_cart FROM ps_orders);
Po usunięciu dużej ilości rekordów wykonaj optymalizację tabel:
sql
OPTIMIZE TABLE ps_connections, ps_connections_source, ps_page_viewed, ps_cart;
Ta komenda reorganizuje dane w tabelach i odzyskuje niewykorzystane miejsce. Może to zająć kilka minut przy dużych tabelach.
Możesz też użyć modułu Ps Cleaner , który automatyzuje proces czyszczenia bazy. Moduł ten oferuje bezpieczne usuwanie starych danych z interfejsem graficznym, bez potrzeby pisania zapytań SQL.
Optymalizacja grafiki: WebP i Leniwe Ładowanie
Obrazy to najczęściej największe pliki pobierane przez przeglądarkę. Zdjęcie produktu w jakości JPEG o wadze 500KB będzie ładować się 5-10 razy dłużej niż ten sam obraz w formacie WebP o wadze 100KB.
Format WebP to nowoczesny format graficzny opracowany przez Google. Oferuje kompresję stratną (z utratą jakości) porównywalną z JPEG, ale przy 30-50% mniejszym rozmiarze pliku. Wszystkie nowoczesne przeglądarki wspierają WebP od 2020 roku.
Migracja istniejących obrazów do WebP wymaga dedykowanego modułu lub skryptu konwersji. Niektóre moduły PrestaShop automatycznie konwertują przesłane obrazy do WebP i serwują je przeglądarkom, które je wspierają, zachowując JPEG/PNG jako fallback dla starszych przeglądarek.
Lazy loading (leniwe ładowanie) to technika, w której obrazy poza widocznym obszarem ekranu nie są ładowane do momentu, aż użytkownik do nich przewinie. Przeglądarka ładuje tylko obrazy "above-the-fold" - widoczne bez przewijania strony.
PrestaShop 8 i 9 domyślnie wspierają lazy loading poprzez atrybut loading="lazy" w tagach . Jeśli używasz starszej wersji, możesz to dodać ręcznie lub użyć modułu.
Nie stosuj lazy loading do obrazów above-the-fold - głównego produktu, banera nagłówka, logo. To spowoduje opóźnienie w ich wyświetleniu i pogorszy LCP.
Wpływ wersji PHP na wydajność i stabilność
Wersja PHP to fundament wydajności PrestaShop. Im nowsza wersja, tym szybsze działanie - różnica może sięgać nawet 100% w czasie generowania strony.
PrestaShop 8 oficjalnie wspiera PHP 8.1, a PrestaShop 9 działa z PHP 8.4. Jeśli Twój sklep nadal działa na PHP 7.4 lub starszym, upgrade jest absolutnym priorytetem.
Aktualizacja PHP wymaga jednak ostrożności. Niektóre starsze moduły i szablony mogą nie być kompatybilne z nowszymi wersjami PHP. Przed upgrade:
Sprawdź kompatybilność aktywnych modułów z nową wersją PHP
Przetestuj sklep na środowisku testowym (staging)
Przygotuj plan rollback na wypadek problemów
Zaplanuj aktualizację w okresie najmniejszego ruchu
Hosting musi wspierać wybraną wersję PHP. Jeśli Twój obecny dostawca nie oferuje PHP 8.1+, to sygnał, że warto rozważyć migrację do lepszego hostingu zoptymalizowanego pod PrestaShop.
Perspective: PHP 8 to nie tylko wydajność
Upgrade z PHP 7.4 do PHP 8.1 to nie tylko wzrost wydajności. To także dostęp do nowoczesnych funkcji językowych, które programiści wykorzystują w nowych modułach. Sklepy działające na starym PHP będą miały coraz większy problem ze znalezieniem kompatybilnych rozszerzeń i wsparcia technicznego. To inwestycja w przyszłość, nie tylko przyspieszenie.
Kiedy warto rozważyć VPS lub Serwer Dedykowany?
Jeśli przeprowadziłeś wszystkie optymalizacje z poprzednich sekcji - wyczyściłeś bazę, zoptymalizowałeś moduły, wdrożyłeś cache i WebP - a sklep nadal działa wolno przy dużym ruchu, problem może leżeć w infrastrukturze.
Hosting współdzielony to najtańsza opcja, ale dzielisz zasoby serwera (CPU, RAM, przepustowość) z dziesiątkami innych witryn. Gdy Twój sklep zaczyna generować tysiące odwiedzin dziennie, ograniczenia hostingu współdzielonego stają się widoczne: długie czasy odpowiedzi serwera (TTFB >1s), sporadyczne błędy 503, ograniczenia w liczbie równoczesnych połączeń z bazą danych.
VPS (Virtual Private Server) daje Ci dedykowane zasoby i pełną kontrolę nad konfiguracją serwera. Możesz zainstalować Redis, dostroić konfigurację PHP-FPM, zoptymalizować Nginx/Apache pod swoje potrzeby. To naturalny krok dla sklepów generujących 5000+ odwiedzin dziennie lub 50+ zamówień dziennie.
Serwer dedykowany to rozwiązanie dla największych sklepów z dziesiątkami tysięcy produktów i setkami zamówień dziennie. Pełna kontrola, maksymalna wydajność, możliwość skalowania zasobów bez limitów.
Wybór odpowiedniego hostingu to temat na osobny artykuł - więcej szczegółów, w tym case study z rzeczywistymi wynikami optymalizacji, znajdziesz w przewodniku Hosting PrestaShop bez Tajemnic.
Zaawansowana Optymalizacja Kodu Front-End (Dla LCP i TBT)
Front-end to pole bitwy o Core Web Vitals - każdy niezoptymalizowany plik CSS czy JavaScript bezpośrednio wpływa na LCP i Total Blocking Time, decydując o tym, czy użytkownik zobaczy treść w 2 czy 5 sekund.
Optymalizacja na poziomie panelu administracyjnego i bazy danych to dopiero początek. Prawdziwe przyspieszenie wymaga ingerencji w kod szablonu i mechanizmy ładowania zasobów.
Wdrożenie Critical CSS dla przyspieszenia LCP
Critical CSS to technika polegająca na wstawieniu minimalnego zestawu stylów (5-15KB) bezpośrednio w HTML, eliminując opóźnienie związane z pobieraniem zewnętrznego pliku CSS. Pełny CSS ładowany jest asynchronicznie, nie blokując renderowania.
Dopiero wtedy może wyświetlić treść. Jeśli główny plik CSS waży 150KB i zawiera style dla całej strony - również tych elementów, które są poniżej widocznego obszaru - użytkownik czeka na pobranie i przetworzenie danych, których nawet nie widzi.
Critical CSS rozwiązuje ten problem. Wyodrębniasz style tylko dla elementów above-the-fold (nagłówek, główny produkt, pierwsze sekcje) - zazwyczaj 5-15KB - i wstawiasz je inline w :
html
{literal}
{/literal}Pełny plik CSS ładowany jest asynchronicznie ( preload z onload ), nie blokując renderowania.
Krytyczna uwaga dla PrestaShop (Smarty): Jeśli próbujesz wstawić inline CSS w szablonie Smarty bez dyrektywy {literal}...{/literal} , parser Smarty zinterpretuje niektóre konstrukcje CSS (np. nawiasy klamrowe) jako kod Smarty i zwróci błąd 500. Zawsze owijaj inline CSS w {literal} .
Jak wygenerować Critical CSS? Użyj narzędzi takich jak Critical (npm package) lub online generatorów jak criticalcss.com. Podajesz URL strony, narzędzie renderuje ją i wyodrębnia style above-the-fold.
Asynchroniczne ładowanie JavaScript (Defer/Async)
JavaScript to główny winowajca opóźnień w Total Blocking Time. Każdy zewnętrzny plik JS blokuje parsowanie HTML - przeglądarka musi pobrać, sparsować i wykonać skrypt przed kontynuowaniem.
Masz dwa główne atrybuty do kontroli ładowania JavaScript:
defer - pobiera skrypt w tle, nie blokując parsowania HTML, i wykonuje go dopiero po pełnym załadowaniu dokumentu. Skrypty z defer wykonują się w kolejności, w jakiej pojawiają się w HTML.
async - pobiera skrypt w tle i wykonuje natychmiast po pobraniu, przerywając parsowanie HTML. Skrypty async wykonują się w losowej kolejności, zależnej od tego, który pobierze się szybciej.
W e-commerce defer jest zazwyczaj lepszym wyborem . Większość skryptów (analityka, moduły, funkcje koszyka) wymaga w pełni załadowanego DOM i może czekać do końca parsowania. Async używaj tylko dla krytycznych, niezależnych skryptów (np. chat widget).
W PrestaShop 8 i 9 możesz kontrolować atrybuty skryptów przez Asset Manager:
php
// W module lub theme
$this->context->controller->registerJavascript(
'module-custom-js',
'modules/mymodule/views/js/script.js',
[
'position' => 'bottom',
'priority' => 150,
'attribute' => 'defer'
]
);
Dla starszych wersji PrestaShop możesz edytować szablony i dodać atrybuty ręcznie:
smarty
{* Przed: *}
{* Po: *}
Przetestuj sklep po dodaniu defer/async - niektóre skrypty mogą wymagać pełnego załadowania DOM lub zależą od innych skryptów. Jeśli coś przestanie działać, sprawdź kolejność wykonywania w DevTools przeglądarki.
Insight: jQuery i defer
Jeśli Twoje skrypty używają jQuery, upewnij się, że jQuery ładuje się z defer przed innymi skryptami jQuery-zależnymi. Alternatywnie, owij zależne skrypty w
$(document).ready()lubwindow.addEventListener('DOMContentLoaded'). W PrestaShop można to kontrolować przez parametrpriorityw Asset Manager.
Optymalizacja Koszyka i Procesu Zakupowego
Szybkość koszyka i checkout to absolutny priorytet. Użytkownik, który dodał produkty do koszyka, jest o krok od zakupu - każda sekunda opóźnienia zwiększa prawdopodobieństwo porzucenia transakcji.
Typowy problem: klient dodaje 7-8 produktów do koszyka (średnia w sklepach B2C), a strona koszyka ładuje się 4-5 sekund. Przyczynami są najczęściej:
Brak indeksów SQL na tabelach
ps_cartips_order_detailZbyt wiele modułów aktywnych na stronach koszyka i checkout
Pop-up "Przejdź do kasy / Kontynuuj zakupy" - irytujący element tarcia
Pierwszy problem rozwiązujesz przez dodanie indeksów w bazie danych:
sql
CREATE INDEX idx_cart_id_product ON ps_cart_product(id_cart, id_product);
CREATE INDEX idx_order_detail_product ON ps_order_detail(id_order, product_id);
Drugi - przez wyjątki modułów (opisane w sekcji 3).
Trzeci - przez modyfikację modułu koszyka ( ps_shoppingcart lub podobnego):
javascript
// W pliku js modułu, znajdź funkcję pokazującą modal po dodaniu produktu
// Zakomentuj lub usuń wywołanie typu:
// showModal() lub displayAddToCartNotification()
To może wydawać się drobnym szczegółem, ale eliminacja każdego elementu tarcia ma znaczenie. Użytkownik chce szybko przejść przez proces zakupu, a każdy dodatkowy klik lub oczekiwanie zwiększa ryzyko porzucenia.
Zgodność z RODO bez utraty wydajności
Moduły zgody na cookies często ładują dziesiątki zewnętrznych skryptów (Google Analytics, Facebook Pixel, remarketingowe) natychmiast po załadowaniu strony, przed uzyskaniem zgody użytkownika. To nie tylko naruszenie RODO, ale też ogromne obciążenie wydajnościowe.
Prawidłowe podejście polega na wstrzymaniu wykonania skryptów do momentu wyrażenia zgody
Zmiana type="text/javascript" na type="text/plain" sprawia, że przeglądarka nie wykonuje skryptu. Dodanie data-accept-cookie="marketing" pozwala modułowi cookie consent aktywować skrypt dopiero po zgodzie użytkownika na tę kategorię.
Dodatkowo, atrybut defer zapewnia, że nawet po aktywacji, skrypt nie zablokuje parsowania strony.
Większość nowoczesnych modułów cookie consent dla PrestaShop (np. Cookie Consent Manager) automatycznie implementuje tę logikę. Jeśli używasz starszego modułu, możesz dodać tę funkcjonalność ręcznie.
Wpływ na Skalowalność SEO i Porządkowanie Kodu
Wydajność techniczna PrestaShop bezpośrednio wpływa na skalowalność SEO - wolne ładowanie, zduplikowane treści i brak danych strukturalnych ograniczają indeksację i widoczność w wyszukiwarkach.
Optymalizacja wydajności to nie tylko lepsze doświadczenie użytkownika. To również fundament dla skutecznego SEO w dużych sklepach z tysiącami produktów i kategorii.
Zarządzanie nawigacją fasetową i duplikacją treści
Filtry produktów (nawigacja fasetowa) to niezbędny element UX w e-commerce, ale mogą generować dziesiątki tysięcy zduplikowanych URL. Każda kombinacja filtrów (kolor + rozmiar + marka) tworzy osobny URL:
/laptopy?marka=dell&ram=16gb&procesor=intel
/laptopy?ram=16gb&procesor=intel&marka=dell <- duplikat
/laptopy?procesor=intel&marka=dell&ram=16gb <- duplikatGoogle indeksuje te strony jako osobne, co prowadzi do rozmycia "link equity" (wartości linków) i problemów z crawl budget - Google marnuje czas na indeksowanie duplikatów zamiast wartościowych stron.
Najlepsze rozwiązanie : przepisać mechanikę filtrów na JavaScript. Użytkownik widzi i używa filtrów normalnie, ale nie generują one nowych URL - filtry zmieniają treść strony przez AJAX, a URL pozostaje ten sam ( /laptopy ). Wymaga to jednak ingerencji w kod szablonu lub modułu filtrów.
Alternatywne rozwiązanie : wykluczyć parametry filtrów w robots.txt :
Disallow: /*?q=price
Disallow: /*?q=color
Disallow: /*?q=brandTo mówi robotom Google, aby ignorowały URL zawierające te parametry. Nie jest to idealne rozwiązanie (boty nadal próbują je indeksować), ale znacząco redukuje problem.
Wdrożenie zaawansowanych danych strukturalnych (JSON-LD)
Dane strukturalne to sposób komunikacji z wyszukiwarkami w ich języku. Zamiast "zgadywać" co jest ceną, a co opinią, Google otrzymuje precyzyjne informacje w formacie JSON-LD.
Dla sklepu e-commerce krytyczne są schematy:
Product - podstawowe informacje o produkcie (nazwa, zdjęcie, opis)
Offer - cena, waluta, dostępność (w magazynie/niedostępny)
Review - pojedyncze opinie użytkowników
AggregateRating - średnia ocen (gwiazdki widoczne w wynikach wyszukiwania)
Przykład JSON-LD dla produktu:
json
{
"@context": "https://schema.org/",
"@type": "Product",
"name": "Laptop Dell XPS 15",
"image": "https://sklep.pl/images/laptop-xps-15.jpg",
"description": "Wydajny laptop do pracy i rozrywki",
"sku": "DELL-XPS-15-2024",
"offers": {
"@type": "Offer",
"url": "https://sklep.pl/laptop-dell-xps-15",
"priceCurrency": "PLN",
"price": "6999.00",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "89"
}
}
PrestaShop 1.7+ domyślnie generuje podstawowe dane strukturalne, ale często wymagają one rozszerzenia. Moduły SEO jak "Structured Data Pro" automatyzują proces i dodają zaawansowane schematy.
Po wdrożeniu danych strukturalnych, przetestuj je w Google Rich Results Test . Sprawdzi on, czy kod jest poprawny i jakie rozszerzone wyniki mogą się pojawić w wyszukiwarce (gwiazdki, ceny, dostępność).
Rich Snippets (rozszerzone wyniki) zwiększają CTR nawet o 30% - użytkownicy chętniej klikają w wyniki z gwiazdkami i ceną widoczną od razu w Google.
International SEO: tagi hreflang i Canonical
Jeśli prowadzisz sklep w wielu wersjach językowych lub regionalnych, musisz poinformować Google, która wersja strony jest dla którego rynku. Służą do tego tagi hreflang .
x-default wskazuje wersję domyślną dla użytkowników z regionów nieobsługiwanych.
Tag canonical wskazuje "preferowaną" wersję strony, rozwiązując problem duplikatów:
W PrestaShop Multi-Store (wiele sklepów z jednej instalacji), generowanie poprawnych tagów hreflang i canonical wymaga dokładnej konfiguracji. Moduły muszą dynamicznie powiązać treść językową z kontekstem sklepu, używając metody Shop::addSqlRestrictionOnLang() .
W praktyce oznacza to, że moduł "wie" w którym sklepie (i języku) aktualnie się znajduje i generuje odpowiednie tagi. Jeśli tego nie ma, możesz mieć sytuację, gdzie polska wersja produktu wskazuje na angielską jako canonical - katastrofa dla SEO.
Uwaga: Błędne canonical i hreflang
Jeden z największych sklepów elektroniki w Polsce miał przez 8 miesięcy błędnie skonfigurowane tagi canonical - wszystkie wersje językowe wskazywały na angielską wersję jako preferowaną. Google zdeindeksował polskie strony i ruch organiczny spadł o 60%. Poprawka zajęła 3 miesiące. Jeśli prowadzisz Multi-Store, regularnie weryfikuj poprawność tych tagów w Google Search Console.
Checklist: Kompleksowa Optymalizacja PrestaShop
Przed publikacją zoptymalizowanego sklepu sprawdź:
Core Web Vitals zmierzone w Page Speed Insights (LCP <2.5s, INP <200ms, CLS <0.1)
CCC aktywowane (Smart cache CSS/JS, minifikacja HTML, JS na końcu strony)
System cache skonfigurowany (Redis/Memcached/File System)
Tryb profilowania użyty do identyfikacji obciążających modułów
Zbędne moduły wyłączone lub ograniczone przez wyjątki
Baza danych wyczyszczona ze starych logów (ps_connections, ps_page_viewed, ps_cart)
Tabele zoptymalizowane komendą OPTIMIZE TABLE
Obrazy skonwertowane do formatu WebP
Lazy loading wdrożone dla obrazów below-the-fold
PHP zaktualizowane do wersji 8.1+ (PS8) lub 8.4 (PS9)
Critical CSS wygenerowane i wstrzyknięte inline z dyrektywą {literal}
JavaScript ładowany z atrybutem defer/async
Skrypty RODO używają type="text/plain" i data-accept-cookie
Filtry przepisane na JavaScript lub wykluczone w robots.txt
Dane strukturalne JSON-LD wdrożone (Product, Offer, Review, AggregateRating)
Tagi hreflang i canonical skonfigurowane dla wersji wielojęzycznych
Backup bazy i plików wykonany przed każdą większą zmianą
Uwaga: Optymalizacja wymaga wiedzy technicznej
Operacje opisane w tym przewodniku - szczególnie ingerencja w bazę danych, modyfikacja szablonów Smarty, konfiguracja serwera - wymagają doświadczenia technicznego. Błąd w zapytaniu SQL czy nieprawidłowa konfiguracja cache może doprowadzić do awarii sklepu. Jeśli nie masz doświadczenia w administracji PrestaShop, zlecenie optymalizacji specjaliście to bezpieczniejsza i często tańsza opcja niż naprawa problemów po nieudanych próbach.
Co Dalej?
Różnica między sklepem PrestaShop, który "działa" a sklepem zoptymalizowanym pod maksymalną wydajność to często 30-50% wyższa konwersja i dwukrotnie lepsze pozycje w Google.
Zacznij od włączenia trybu profilowania i zidentyfikowania największych "winowajców" - zobaczysz dokładnie, które moduły lub zapytania SQL generują największe opóźnienia.
Wyobraź sobie sklep, gdzie każda strona ładuje się w mniej niż 2 sekundy, gdzie użytkownicy płynnie dodają produkty do koszyka bez irytujących pop-upów, a Google nagradza Cię wyższymi pozycjami za doskonałe Core Web Vitals.
To nie marzenie - to efekt systematycznej optymalizacji według tego przewodnika. Zacznij działać teraz.
Potrzebujesz wsparcia w optymalizacji PrestaShop?
Oferuję kompleksowy audyt wydajności, który precyzyjnie wskaże największe możliwości przyspieszenia Twojego sklepu. Podczas konsultacji otrzymasz konkretny plan działania z priorytetami i szacowanym wpływem każdej optymalizacji.
Umów się na bezpłatną konsultację • Tworzenie sklepów PrestaShop • Software House - usługi techniczne

