Logujesz się do panelu administracyjnego swojego sklepu, zauważasz, że zaczął on działać zdecydowanie wolniej, co się stało?

Niedostępność API PrestaShop

Może zdarzyć się tak, że serwery PrestaShop, do których próbuje łączyć się panel Twojego sklepu mają awarie, sklep próbuje się z nimi połączyć ale po kilkudziesięciu sekundach daje za wygraną, wtedy dopiero możemy zacząć pracę, niestety taki długi czas ładowania może powtarzać się wielokrotnie podczas takiej awarii.

Co robić? Jedynym sposobem w chwili pisania tego wpisu (01.08.2019), jest modyfikacja dwóch plików silnika PrestaShop odpowiadających za łączenie się z serwerami API. Od wersji 1.7.7 PrestaShop dzięki implementacji biblioteki Circuit Breaker napisanej przez jednego z współpracowników PrestaShop, takie sytuacje nie powinny mieć miejsca.

 

Co i gdzie edytować?

Na pierwszy ogień bierzemy plik classes/Tools.php, znajdujemy w nim linię:

protected static $is_addons_up = true;

Zmieniamy wartość “true”, na “false”.

Drugi plik jaki nas interesuje znajduje się w /src/Adapter/Addons/AddonsDataProvider.php, tam również szukamy linii:

protected static $is_addons_up = true;

i zmieniamy wartość z “true”, na “false”.

Zapisujemy oba pliki i w tym momencie PrestaShop nie odpyta więcej serwerów Addons Marketplace, czy też API, a cały panel powinien znacznie przyspieszyć.

Trzeba mieć jednak świadomość, że taka operacja powinna zostać cofnięta gdy PrestaShop poradzi sobie z awarią. Dlaczego? PrestaShop łączy się ze swoimi serwerami by powiadomić nas o tym, że istnieją nowe wersje oprogramowania czy też nowe wersje modułów, nie jesteśmy w stanie również korzystać z katalogów modułów ładowanych bezpośrednio z addons.marketplace.com, czy też wyszukiwać natywnych modułów ładowanych poprzez API.

Warto więc używać tej modyfikacji z rozwagą.

Moduły cronjobs gamification

Te dwa moduły są prawdziwymi szkodnikami jeżeli chodzi o szybkość ładowania back-office. Zdecydowanie radzę aby każdy je usunął ze swojej instalacji PrestaShop.

Co jeszcze?

To oczywiście nie wszystkie potencjalne powody dlaczego panel zarządzania sklepem może zwolnić. Inne, które znam to:

  • łączenie się z zewnętrznymi serwerami dodatków kupionych z oficjalnych bądź nieoficjalnych źródeł
  • łączenie się niektórych modułów z ich API, np. furgonetka czy kilka innych dostawców modułów dla przewoźników
  • sprawdzanie aktualizacji przez moduły firm trzecich (poza PrestaShop), często sprawdzanie tychże aktualizacji jest przeprowadzane nieoptymalnie, bez odpowiedniego zabezpieczenia na wypadek awarii serwera, z którym taka wtyczka próbuje się połączyć
  • niektóre moduły filtrowania przypinają się do zdarzeń dodania, edycji i usunięcia, produktów, kategorii itd. Potrafi to bardzo utrudnić pracę w panelu, warto np. posiadając moduł Advanced Search 4 wyłączyć reindeks filtrowania podczas tych zdarzeń, twórcy dodatku na szczęście dodali w swoim module taką opcję

W lokalizacji wąskiego gardła jeżeli chodzi o wydajność PrestaShop pomoże doświadczenie użytkownika oraz wbudowany w oprogramowanie profiler, który pozwala stwierdzić jakie operacje podczas ładowania strony zajmują najwięcej czasu.