Quand les combinaisons PrestaShop tuent la performance : limites et solutions
Quand les combinaisons PrestaShop tuent la performance : limites et solutions
Le systeme de combinaisons de PrestaShop permet de creer des variantes de produits. Il fonctionne parfaitement pour les produits avec quelques variantes. Mais quand les produits ont des centaines ou milliers de combinaisons, la performance se degrade dramatiquement.
Pourquoi les combinaisons causent des problemes de performance
Architecture de la base de donnees
PrestaShop stocke les donnees de combinaisons dans plusieurs tables : ps_product_attribute, ps_product_attribute_combination, ps_stock_available, ps_specific_price. Un produit avec 5 tailles et 10 couleurs cree 50 combinaisons avec plus de 350 lignes en base.
Le probleme de croissance exponentielle
| Attributs | Valeurs | Combinaisons | Lignes 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 |
Limites pratiques
| Nombre | Front Office | Back Office | Verdict |
|---|---|---|---|
| 1-50 | Rapide | Rapide | Aucun probleme |
| 50-200 | Acceptable | Acceptable | Gerable |
| 200-500 | Lent (3-8s) | Lent | Optimisation necessaire |
| 500-1000 | Tres lent | Tres lent | Restructuration a envisager |
| 1000+ | Inutilisable | Plantages | Restructuration obligatoire |
Solution 1 - Restructurer le catalogue
Au lieu d'un produit avec 50 combinaisons (10 couleurs x 5 tailles), creez des produits separes par couleur avec 5 combinaisons chacun. Plus rapide et meilleur pour le SEO.
Solution 2 - Optimisation base de donnees et serveur
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);Solution 3 - Chargement progressif des combinaisons
Au lieu de charger toutes les combinaisons au chargement de la page, charger les donnees par AJAX quand le client selectionne un attribut.
Solution 4 - Strategies de cache
Cache de page complet (Varnish, LiteSpeed) pour les pages produits. Redis ou Memcached pour le cache objet.
Quand eviter completement les combinaisons
- Produits configurables avec 4+ attributs - Module configurateur de produit
- Produits dimensionnels - Module de dimensions personnalisees
- Produits print-on-demand - Module de design produit
Recommandations par nombre de combinaisons
| Nombre | Action recommandee |
|---|---|
| Moins de 100 | Aucune action necessaire |
| 100-300 | Index BD, OPcache, Redis |
| 300-1000 | Diviser les produits, index, lazy loading |
| Plus de 1000 | Restructurer le catalogue, module configurateur |
Cette réponse vous a-t-elle été utile ?
Vous avez encore des questions ?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.