Quando le combinazioni PrestaShop uccidono le prestazioni: limiti e soluzioni
Quando le combinazioni PrestaShop uccidono le prestazioni: limiti e soluzioni
Il sistema di combinazioni di PrestaShop permette di creare varianti di prodotto. Funziona perfettamente per prodotti con poche varianti. Ma quando i prodotti hanno centinaia o migliaia di combinazioni, le prestazioni degradano drasticamente.
Perche le combinazioni causano problemi di prestazioni
Architettura del database
PrestaShop memorizza i dati delle combinazioni in piu tabelle: ps_product_attribute, ps_product_attribute_combination, ps_stock_available, ps_specific_price. Un prodotto con 5 taglie e 10 colori crea 50 combinazioni con oltre 350 righe nel database.
Il problema della crescita esponenziale
| Attributi | Valori | Combinazioni | Righe DB |
|---|---|---|---|
| 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 |
Limiti pratici
| Numero | Front Office | Back Office | Verdetto |
|---|---|---|---|
| 1-50 | Veloce | Veloce | Nessun problema |
| 50-200 | Accettabile | Accettabile | Gestibile |
| 200-500 | Lento (3-8s) | Lento | Ottimizzazione necessaria |
| 500-1000 | Molto lento | Molto lento | Considerare ristrutturazione |
| 1000+ | Inutilizzabile | Spesso crash | Ristrutturazione necessaria |
Soluzione 1 - Ristrutturare il catalogo
Invece di un prodotto con 50 combinazioni, creare prodotti separati per colore con 5 combinazioni ciascuno.
Soluzione 2 - Ottimizzazione database e server
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);Soluzione 3 - Lazy loading delle combinazioni
Invece di caricare tutte le combinazioni al caricamento della pagina, recuperare i dati via AJAX quando il cliente seleziona un attributo.
Soluzione 4 - Strategie di caching
Cache dell'intera pagina (Varnish, LiteSpeed) per le pagine prodotto. Redis o Memcached per il cache degli oggetti.
Quando evitare completamente le combinazioni
- Prodotti configurabili con 4+ attributi - Modulo configuratore prodotto
- Prodotti dimensionali - Modulo dimensioni personalizzate
- Prodotti print-on-demand - Modulo designer prodotto
Raccomandazioni per numero di combinazioni
| Numero | Azione raccomandata |
|---|---|
| Sotto 100 | Nessuna azione necessaria |
| 100-300 | Indici DB, OPcache, Redis |
| 300-1000 | Dividere prodotti, indici, lazy loading |
| Oltre 1000 | Ristrutturare catalogo, modulo configuratore |
Questa risposta ti è stata utile?
Hai ancora domande?
Can't find what you're looking for? Send us your question and we'll get back to you quickly.