Gdy kombinacje PrestaShop zabijają wydajność: limity i obejścia
Gdy kombinacje PrestaShop zabijaja wydajnosc: limity i obejscia
System kombinacji PrestaShop pozwala tworzyc warianty produktow. Dziala doskonale dla produktow z kilkoma wariantami. Ale gdy produkty maja setki lub tysiace kombinacji, wydajnosc drastycznie spada.
Dlaczego kombinacje powoduja problemy z wydajnoscia
Architektura bazy danych
PrestaShop przechowuje dane kombinacji w wielu tabelach: ps_product_attribute, ps_product_attribute_combination, ps_stock_available, ps_specific_price. Produkt z 5 rozmiarami i 10 kolorami tworzy 50 kombinacji z ponad 350 wierszami w bazie.
Problem wzrostu wykladniczego
| Atrybuty | Wartosci | Kombinacje | Wiersze BD |
|---|---|---|---|
| 2 | 5 x 5 | 25 | ~175 |
| 3 | 10 x 15 x 8 | 1 200 | ~8 400 |
| 4 | 10 x 15 x 8 x 5 | 6 000 | ~42 000 |
Praktyczne limity
| Liczba | Front Office | Back Office | Ocena |
|---|---|---|---|
| 1-50 | Szybko | Szybko | Brak problemow |
| 50-200 | Akceptowalnie | Akceptowalnie | Do opanowania |
| 200-500 | Wolno (3-8s) | Wolno | Potrzebna optymalizacja |
| 500-1000 | Bardzo wolno | Bardzo wolno | Rozwazyc restrukturyzacje |
| 1000+ | Nieuzywalne | Czesto awarie | Restrukturyzacja wymagana |
Rozwiazanie 1 - Restrukturyzacja katalogu
Zamiast jednego produktu z 50 kombinacjami, stworz oddzielne produkty na kolor z 5 kombinacjami kazdy. Szybsze i lepsze dla SEO.
Rozwiazanie 2 - Optymalizacja bazy danych i serwera
ALTER TABLE ps_product_attribute
ADD INDEX idx_product_default (id_product, default_on);
ALTER TABLE ps_stock_available
ADD INDEX idx_product_attribute (id_product, id_product_attribute);Rozwiazanie 3 - Lazy loading kombinacji
Zamiast ladowac wszystkie kombinacje przy wczytywaniu strony, pobieraj dane przez AJAX gdy klient wybiera atrybut.
Rozwiazanie 4 - Strategie cachowania
Cache calej strony (Varnish, LiteSpeed) dla stron produktow. Redis lub Memcached zamiast cachowania plikowego.
Kiedy unikac kombinacji calkowicie
- Produkty konfigurowalne z 4+ atrybutami - Modul konfiguratora produktow
- Produkty wymiarowe - Modul niestandardowych wymiarow
- Produkty print-on-demand - Modul projektanta produktow
Rekomendacje wedlug liczby kombinacji
| Liczba | Zalecane dzialanie |
|---|---|
| Ponizej 100 | Brak potrzeby dzialania |
| 100-300 | Indeksy BD, OPcache, Redis |
| 300-1000 | Podzielic produkty, indeksy, lazy loading |
| Powyzej 1000 | Restrukturyzacja katalogu, modul konfiguratora |
Czy ta odpowiedź była pomocna?
Masz jeszcze pytania?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.