Cache delle pagine, OPcache, Redis, cache del browser: quando si parla di velocità di un sito la parola «cache» compare ovunque, e non sempre è chiaro di quale si stia parlando. Il risultato è che si svuota la cache sbagliata, si attivano due strumenti che fanno la stessa cosa o ci si aspetta da uno il lavoro di un altro. In questo articolo mettiamo ordine: chi fa cosa, in quale momento della richiesta, e quale cache svuotare quando qualcosa non torna.
Il viaggio di una richiesta
Immagina un visitatore che apre una pagina del tuo sito. Prima di arrivargli, la pagina può fermarsi a diversi livelli, ognuno più vicino a lui del precedente. Partiamo dal più lontano, il server, e risaliamo.
1. Il database
È dove vivono contenuti, prodotti, ordini, utenti e impostazioni. È affidabile e completo, ma ogni domanda che gli fai costa un po’ di tempo. Una pagina di WordPress o di un negozio può richiedere decine, a volte centinaia, di domande al database.
2. Redis: la cache dei dati
Redis si mette tra PHP e il database. Quando il CMS ha bisogno di un dato, prima guarda in Redis: se lo trova, lo usa subito; se non lo trova, lo chiede al database e ne lascia una copia in Redis per la volta successiva. Redis non conserva pagine intere, ma i pezzi con cui le pagine vengono costruite: opzioni, menu, dati dei prodotti, risultati di query.
Il suo campo d’azione è quello delle pagine che vanno costruite ogni volta: carrello, cassa, area riservata, pannello di amministrazione, pagine per utenti collegati. Sul nostro hosting lo attivi dal pannello e lo colleghi con un plugin o un modulo; trovi i dettagli nella pagina dedicata a Redis.
3. OPcache: la cache del codice
Il tuo sito è fatto di file PHP che, prima di essere eseguiti, vanno tradotti in istruzioni che il server capisce. OPcache tiene in memoria il risultato di questa traduzione, così non va rifatta a ogni richiesta. Non conserva dati né pagine: solo codice già pronto da eseguire.
Sul nostro hosting OPcache è già attivo e configurato in base al CMS del piano. Non devi fare nulla.
4. La cache delle pagine
Qui si salta tutto il lavoro. La pagina completa, già costruita, viene conservata e consegnata così com’è ai visitatori successivi: niente PHP, niente database, niente Redis. È il livello che dà i guadagni più grandi, ma vale solo per le pagine uguali per tutti, come la home, gli articoli, le schede prodotto viste da un visitatore anonimo.
Sul nostro hosting questo lavoro lo fa iWebLab Cache, il nostro plugin per WordPress e modulo per PrestaShop, insieme alla rete iWebLab Edge, che serve le pagine dalla cache dai suoi punti di presenza, prima ancora che la richiesta arrivi al server del sito.
5. La cache del browser
L’ultimo livello è sul dispositivo del visitatore: immagini, fogli di stile e script già scaricati vengono riusati nelle visite successive senza richiederli di nuovo.
Chi fa cosa, in una tabella
| Livello | Cosa conserva | Quando aiuta | Chi lo gestisce |
|---|---|---|---|
| Cache delle pagine e rete Edge | Pagine complete | Visitatori anonimi, pagine uguali per tutti | iWebLab Cache e rete iWebLab Edge |
| Redis | Dati usati per costruire le pagine | Carrello, cassa, area riservata, amministrazione, utenti collegati | Tu, dal pannello e dal plugin o modulo |
| OPcache | Codice PHP già compilato | Sempre, su ogni pagina costruita dal server | Noi, già configurato |
| Cache del browser | Immagini, CSS, script | Visite successive dello stesso visitatore | Il browser, secondo le regole del sito |
Perché servono tutti
Questi livelli non sono alternativi: si completano. Su un negozio, la home e le schede prodotto per i visitatori anonimi arrivano dalla cache delle pagine. Appena il cliente mette qualcosa nel carrello, le sue pagine vanno costruite dal server: lì OPcache fa sì che il codice sia già pronto e Redis che molti dati arrivino dalla memoria invece che dal database.
Togliere uno dei livelli significa caricare di più gli altri. Senza cache delle pagine, ogni visita costringe il server a costruire la pagina da capo, anche con Redis attivo. Senza Redis, le pagine dinamiche interrogano sempre il database.
Gli equivoci più frequenti
«Ho attivato Redis, posso fare a meno della cache delle pagine.» No. Redis rende più veloce la costruzione di una pagina; la cache delle pagine evita di costruirla. Per le pagine uguali per tutti la seconda resta di gran lunga la più efficace.
«Ho la cache delle pagine, Redis non mi serve.» Dipende dal sito. Per un sito vetrina con poche pagine e nessun utente registrato, spesso è vero. Per un negozio, un sito con area riservata o un pannello di amministrazione lento, Redis fa la sua parte proprio dove la cache delle pagine non arriva.
«Redis e OPcache sono la stessa cosa.» No: OPcache conserva il codice, Redis i dati. Lavorano insieme sulla stessa richiesta senza sovrapporsi.
«Più plugin di cache attivi, più il sito è veloce.» È il contrario. Due plugin che gestiscono la cache delle pagine, o due object cache, si ostacolano a vicenda. Ogni livello deve avere un solo responsabile.
Quale cache svuotare
| Cosa succede | Probabile livello | Cosa fare |
|---|---|---|
| Hai cambiato un testo dal CMS e il visitatore anonimo vede ancora quello vecchio | Cache delle pagine | Svuota la cache delle pagine dal plugin o modulo |
| Hai cambiato un dato direttamente nel database o ripristinato un backup del database | Redis | Svuota l’object cache dal plugin |
| Hai cambiato un foglio di stile e tu continui a vedere quello vecchio | Browser | Ricarica forzata o finestra anonima |
| Dopo un aggiornamento importante qualcosa si comporta in modo strano | Più livelli | Svuota object cache e cache delle pagine, poi verifica |
OPcache, sul nostro hosting, non è qualcosa che devi svuotare tu. Se sospetti un problema che riguarda il codice in memoria, apri un ticket.
Da dove cominciare
Se vuoi rendere il sito più veloce e non sai da quale livello partire, l’ordine che consigliamo è questo:
- una cache delle pagine ben configurata, che dà il guadagno maggiore;
- una versione di PHP aggiornata, con OPcache che già lavora per te;
- Redis, se il sito ha molte pagine dinamiche: negozi, aree riservate, utenti collegati;
- immagini leggere, che riguardano un aspetto diverso ma spesso decisivo.
Se il tuo sito è lento e non è chiaro perché, apri un ticket dall’area clienti: guardiamo quale livello sta lavorando male e ti diciamo dove intervenire.