Quando le combinazioni PrestaShop uccidono le prestazioni: limiti e soluzioni

430 visualizzazioni

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

AttributiValoriCombinazioniRighe DB
25 x 525~175
310 x 15 x 81.200~8.400
410 x 15 x 8 x 56.000~42.000

Limiti pratici

NumeroFront OfficeBack OfficeVerdetto
1-50VeloceVeloceNessun problema
50-200AccettabileAccettabileGestibile
200-500Lento (3-8s)LentoOttimizzazione necessaria
500-1000Molto lentoMolto lentoConsiderare ristrutturazione
1000+InutilizzabileSpesso crashRistrutturazione 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

NumeroAzione raccomandata
Sotto 100Nessuna azione necessaria
100-300Indici DB, OPcache, Redis
300-1000Dividere prodotti, indici, lazy loading
Oltre 1000Ristrutturare 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.

Loading...
Back to top