Długie ładowanie sklepu PRESTASHOP 1.7 - Grupago

Długie ładowanie sklepu PRESTASHOP 1.7

Coraz częściej przedsiębiorcy branży eCommerce borykają się z problemem spowalniających sklepów internetowych opartych o system Prestashop. Sporo firm informatycznych nie jest w stanie naprawić problemów wydajnościowych tych sklepów. Uruchomienie cache’owania, zmiana serwera na szybszy, a nawet czyszczenie bazy ze zbędnych danych nie zawsze daje oczekiwane efekty. Sklepy działają wolno, strony ładują się od 3 do nawet 10 sekund nawet przy niewielkich kilkutysięcznych bazach produktowych. 

Przez 10 lat naszego doświadczenia z Prestashop wyrobiliśmy metodykę identyfikowania problemów wydajnościowych, które możemy podzielić na problemy związane z bazą danych oraz problemy związane z nadmiarową ilością plików. O ile problem z bazą danych jest dość łatwy do wykrycia poprzez zastosowanie odpowiednich technik pomiarowych, to problem z nadmiarową ilością plików wymaga pełnej analizy kodu źródłowego.

 

Problemy z wydajnością bazy danych

Problemy z bazą danych są generowane głównie przez moduły, które nie trzymają powtarzalnych wyników w pamięci podręcznej (CACHE) i pobierają wyniki z bazy danych za każdym razem, kiedy użytkownik porusza się po stronach sklepu internetowego. Na rynku jest wiele modułów płatnych i darmowych, które znacznie spowalniają sklepy internetowe, a często dają o sobie znać podczas poszerzania bazy produktowej. 

Najważniejsze jest odnalezienie problematycznych modułów, a jednym ze sposobów jest wyłączenie wszystkich modułów i ponowne ich uruchomienie. Przy każdym uruchomieniu modułu należy przetestować szybkość ładowania sklepu. Wyraźny spadek szybkości oznacza problemy z poprzednio uruchomionym modułem.

Jeśli zidentyfikujemy problematyczny moduł, który jest przyczyną spowolnionego działania sklepu internetowego, można wymienić go na inny lub podjąć próbę jego naprawy. Niestety nie każdy moduł można naprawić ze względu na zaszyfrowanie plików kodu źródłowego przez jego twórce. Oznacza to, że poprawę takiego modułu może wykonać tylko jego producent. Jeśli moduł nie jest zaszyfrowany, to może go naprawić każdy programista posiadający doświadczenie w programowaniu sklepów internetowych opartych na systemie Prestashop.

 

  • W trakcie prac programistycznych wykonuje się: 
  1. – poprawę zapytań bazodanowych, 
  2. – wprowadza się indeksy do kolumn w bazie danych, 
  3. – wykorzystuje się cacheowanie powtarzalnych wyników pobieranych z bazy danych, 
  4. – wprowadza się dynamiczne ładowanie modułów w tle, tak aby załadowane były tylko te, które widoczne są w danej chwili
  •  
  • Powyższe zadania wykonuje się dla wszystkich modułów, które wpływają na czas ładowania sklepu internetowego.
  •  

Problemy z nadmiarową ilością plików

Drugim problemem jest nadmiarowa ilość plików generowanych przez moduły. Wielokrotnie spotkaliśmy się z modułami, które w swoich katalogach generują dokumenty np. pdf-y z ofertami, listami przewozowymi czy fakturami. W Prestashop 1.7 została wdrożona funkcja autoload, która przy każdym wejściu na stronę i podczas poruszania się po niej automatycznie dodaje pliki np. pliki Core i modułów do pamięci serwera. Innymi słowy – błędnie napisany moduł będzie w jednym katalogu gromadził listy przewozowe do każdego zamówienia klientów, a system sklepu internetowego będzie tą listę wprowadzał do swojej pamięci.

Problem jest niewielki, gdy lista składa się z 1000 plików, natomiast spotkaliśmy się z przypadkiem, gdzie do pamięci podręcznej przy każdym wejściu na stronę pobieranych było 100 000 plików, co znacznie spowalniało sklep internetowy. Niestety wyłączanie modułów i ponowne ich uruchamianie – jak w przypadku problemów wydajnościowych związanych z bazą danych – nie pozwoli na odnalezieni