Cache in PrestaShop: Smarty, Symfony, CCC e cache di pagina, cosa attivare
PrestaShop ha diverse cache che non si somigliano tra loro. Capire cosa conserva ognuna evita sia la lentezza sia gli errori del tipo «non vedo le mie modifiche».
Quando qualcuno dice «ho svuotato la cache ed è tutto uguale», quasi sempre ha svuotato una delle varie cache che ha un negozio PrestaShop. Questi sono i livelli, dall'interno verso l'esterno.
1. OPcache (PHP)
Conserva il codice PHP già compilato. Non incide sui dati, solo sulla velocità. Sempre attiva in produzione.
2. Cache di Symfony
In var/cache/prod: il container dei servizi, le rotte, i template Twig del back office. Si rigenera da sola quando si svuota. Se installi un modulo e la sua schermata dà errore, svuotare questa cache è la prima cosa da fare.
3. Cache di Smarty
Compila i template del front e, facoltativamente, conserva l'HTML di alcuni blocchi. In Parametri avanzati > Prestazioni:
- Compilazione: «Non ricompilare mai» in produzione.
- Cache: attivata.
4. CCC: combinare, comprimere e mettere in cache
Unisce i CSS e i JS del tema e dei moduli in pochi file. Meno richieste, pagina più veloce. Ma se un modulo aggiunge script in modo poco ortodosso, qualcosa può rompersi: attivala e controlla carrello e checkout.
5. Cache dei dati (Redis, Memcached, APCu)
Conserva i risultati delle query al database. Utile nei negozi grandi, ma delicata: se la cache non viene invalidata quando cambiano i dati, vedrai informazioni vecchie. Ne parliamo in dettaglio nell'articolo su Redis.
6. Cache di pagina completa
Conserva l'intera pagina già generata e la serve senza eseguire PrestaShop (LiteSpeed Cache, Varnish, moduli di cache di pagina). È quella che accelera di più e quella che richiede più attenzione: carrello, prezzi per gruppo di clienti, stock e messaggi personalizzati non possono uscire da una pagina salvata per un altro visitatore.
Ordine per svuotare le cache
- Cache di pagina (se c'è).
- Cache dei dati.
- Prestazioni > Svuota la cache (Smarty e Symfony).
- Cache del browser (ricarica forzata).