Na początku większość sklepów PrestaShop działa bardzo szybko. Strony ładują się sprawnie, panel administracyjny reaguje natychmiast, a klienci bez problemu przeglądają produkty. Z czasem jednak coś zaczyna się zmieniać...
Najpierw pojawiają się pojedyncze sygnały - ktoś napisze, że sklep ładuje się wolniej. Potem panel administracyjny zaczyna reagować z opóźnieniem. W końcu zdarza się, że w godzinach większego ruchu sklep potrafi ładować się kilka sekund. Właściciele sklepów często myślą wtedy "czemu ta presta jest taka wolna?!". W praktyce jednak, w większości przypadków problem nie leży w samym silniku sklepu - a więc w PrestaShop..., ale w środowisku, w którym działa.
Poniżej kilka sytuacji, które najczęściej powodują spadek wydajności sklepu na PrestaShop.
1. Hosting współdzielony osiąga swój limit
Na starcie hosting współdzielony jest rozsądnym wyborem. Kosztuje niewiele i nie wymaga żadnej administracji. Problem pojawia się dopiero wtedy, gdy sklep zaczyna generować większy ruch. Wtedy zaczyna być widoczne coś, czego na początku wcale nie widać - zasoby serwera są współdzielone z wieloma innymi stronami.
To oznacza, że Twój sklep korzysta z tej samej puli CPU, pamięci i operacji dyskowych co inne strony znajdujące się na tym samym serwerze. Więc inni klienci hostingu wykorzystują dokładnie to, co i my. Pytanie kto będzie pierwszy... Dopóki ruch jest niewielki, wszystko działa poprawnie. Jednak gdy sklep zaczyna obsługiwać więcej użytkowników jednocześnie, bardzo łatwo dojść do momentu, w którym dostępne zasoby serwera przestają wystarczać dla wszystkich. Wtedy pojawiają się objawy, które właściciele sklepów znają bardzo dobrze:
- długie ładowanie stron produktów,
- wolno działający koszyk,
- panel administracyjny reagujący z dużym opóźnieniem.
W praktyce często spotykam sklepy PrestaShop działające na hostingu współdzielonym, które już zaczynają odczuwalnie zwalniać w momencie gdy liczba jednoczesnych użytkowników przekracza kilka osób. Wtedy jedynym sposobem jest wybór nowego serwera pod sklep.
2. Zbyt duża liczba modułów w sklepie
PrestaShop ma ogromną zaletę - ma modularną budowę, więc można go bardzo łatwo rozbudować o dodatkowe funkcje za pomocą... modułów. Płatności, integracje z kurierami, systemy marketingowe, moduły analityczne, wyszukiwarki produktów… lista tych dodatków potrafi być naprawdę długa. I co istotne - pojedyncze moduły kosztują niewiele w porównaniu do tradycyjnych rozwiązań - np. kosztu programisty, który musiałby daną funkcjonalność "dokodować" do danego sklepu.
Na pierwszy rzut oka wygląda to pięknie, ale ma też pewną oczywistą wadę. Każdy moduł dodaje własny kod, który musi zostać wykonany przy generowaniu strony. Jeżeli sklep działa kilka lat, bardzo często okazuje się, że zainstalowanych jest kilkadziesiąt modułów. Część z nich jest aktywna, mimo że nie jest już potrzebna, albo część została zainstalowana tylko "na próbę" i już dawno przestała być używana.
W efekcie serwer przy każdym wejściu na stronę wykonuje coraz więcej operacji, co w naturalny sposób zaczyna wpływać na czas ładowania sklepu.
3. Baza danych zaczyna być wąskim gardłem
Sklep internetowy to w dużej mierze ciągłe operacje na bazie danych. Wszystkie zmiany produktów, opisy, ceny... to wszystko zapisywane jest w bazie danych. Każde wejście na stronę produktu oznacza pobranie informacji o:
- cenie,
- dostępności,
- wariantach,
- zdjęciach,
- powiązanych produktach itp.
Do tego dochodzą zapytania generowane przez moduły, koszyk, wyszukiwarkę czy system promocji.
Jeżeli baza danych nie jest odpowiednio skonfigurowana lub działa na serwerze z ograniczonymi zasobami, bardzo łatwo dochodzi do sytuacji, w której to właśnie ona staje się najwolniejszym elementem całego sklepu. W praktyce oznacza to, że nawet szybki serwer WWW nie pomoże - sklep będzie czekał na odpowiedź bazy danych.
4. Brak skutecznego cache
Cache to jeden z najważniejszych elementów wpływających na wydajność sklepu. Bez niego każda strona musi być generowana od początku przy każdym wejściu użytkownika. W przypadku sklepu z dużą liczbą produktów oznacza to ogromną liczbę zapytań do bazy danych i operacji wykonywanych przez serwer.
Istnieje wiele rodzajów i architektury cache. Może być plikowy, bazowy, w pamięci RAM, wykorzystywany przez PHP lub tylko przez serwer WWW. Jednak wspólną cechą tych wszystkich systemów cache'ujących jest to, że skonfigurowany odpowiednio - pozwala ograniczyć operacje na serwerze i znacząco skrócić czas generowania strony. W praktyce często okazuje się, że samo poprawne ustawienie mechanizmów cache potrafi radykalnie poprawić szybkość działania sklepu.
5. Serwer nie jest przygotowany pod sklep
Ostatnia sytuacja, którą bardzo często spotykam w praktyce, to serwer skonfigurowany w sposób bardzo ogólny. Uniwersalny. Taki do wszystkiego... i do niczego. Takie ustawienia mogą działać poprawnie dla prostych stron internetowych, ale sklepy e-commerce mają zupełnie inne wymagania. Liczba zapytań do bazy danych, operacje wykonywane przez PHP czy sposób obsługi ruchu użytkowników są znacznie bardziej wymagające.
Jeżeli środowisko serwerowe nie jest dopasowane do tego typu aplikacji, wydajność sklepu zaczyna spadać wraz ze wzrostem ruchu. Kluczowa jest dopasowana konfiguracja serwerowa.
Czy problemem jest serwer?
Jeżeli sklep PrestaShop zaczyna działać coraz wolniej, nie zawsze oznacza to konieczność natychmiastowej zmiany hostingu lub serwera. Czasami wystarczy:
- przejrzeć i poprawić konfigurację serwera,
- zoptymalizować bazę danych,
- ograniczyć liczbę zbędnych modułów.
Zdarza się jednak, że sklep po prostu jest zbyt duży na swój hosting. W takiej sytuacji najlepszym rozwiązaniem jest przygotowanie środowiska serwerowego dopasowanego do jego rzeczywistych potrzeb i generowanego obciążenia. Dobrze dobrany i skonfigurowany serwer potrafi skrócić czas ładowania strony z kilku sekund do ułamka sekundy, co bezpośrednio wpływa zarówno na komfort klientów, jak i na sprzedaż.
Jeżeli chcesz sprawdzić, co spowalnia Twój sklep, zobacz jak wygląda konfiguracja serwera dla PrestaShop albo skontaktuj się z nami - pomożemy ustalić przyczynę problemu i spróbujemy przyspieszyć Twój sklep.