Redis e Memcached con PrestaShop: quando convengono e cosa può andare storto
Una cache delle query può accelerare un negozio grande, o farti vedere dati di mezz'ora fa. Ti diciamo come decidere e come evitare sorprese.
Redis e Memcached sono archivi in memoria che PrestaShop (o un modulo) può usare per conservare i risultati delle query al database e non ripeterle. Nei negozi con molto traffico e cataloghi grandi, il risparmio è reale. Nei negozi piccoli, spesso aggiunge solo complessità.
Quando conviene
- Molte visite simultanee e il database è il collo di bottiglia misurato.
- Catalogo grande con molte query ripetute (categorie, caratteristiche, filtri).
- Hai il controllo del server per installare e monitorare Redis.
Il problema di sempre: invalidare
Una cache delle query deve sapere quando un dato è cambiato per smettere di servire la versione vecchia. Se conserva per 30 minuti il risultato di «quanti prodotti ci sono in questa tabella» e qualcuno inserisce righe senza che la cache se ne accorga, per quei 30 minuti tutti vedranno il numero vecchio.
Buone pratiche
- Escludi le tabelle volatili: carrelli, ordini, stock, clienti e sessioni non dovrebbero mai finire in cache.
- TTL ragionevoli e un modo semplice per svuotare la cache dal back office.
- Gli script di manutenzione, le importazioni e i cron devono lavorare sul database reale, non sulla cache.
- Attenzione alla disinstallazione: alcune cache installano override delle classi del database. Se si cancella la cartella del modulo senza disinstallarlo, quegli override possono rompere ogni scrittura nel negozio. Disinstalla sempre dal back office e poi controlla la cartella
override/classes/db/.
Alternative prima di Redis
- Indici sulle query lente.
- Cache di Smarty ben configurata.
- Cache di pagina per i visitatori anonimi, ben esclusa da carrello e account.
Se tutto ciò non basta, allora sì: una cache dei dati, ben configurata e monitorata.