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:

  1. una cache delle pagine ben configurata, che dà il guadagno maggiore;
  2. una versione di PHP aggiornata, con OPcache che già lavora per te;
  3. Redis, se il sito ha molte pagine dinamiche: negozi, aree riservate, utenti collegati;
  4. 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.

Altri articoli su Guida a Redis

Parliamone

Un hosting che ti spiega le cose, e poi le fa

Questi articoli nascono dalle domande dei nostri clienti. Se vuoi un hosting dove dietro ogni risposta c’è un tecnico vero, parliamone.

  • 4,9 su 5 su Trustpilot264 recensioni, il 96% a cinque stelle
  • Risponde un tecnicoIn italiano, da chi gestisce i server
  • Il trasloco lo facciamo noiSito, database e posta, controllati prima di spostare i DNS