Hai attivato Redis dal pannello, ma il tuo WordPress ancora non lo usa: per farlo serve una object cache persistente. In questa guida vediamo cos’è, come collegarla con il nostro plugin o con uno di terzi, come scegliere il prefisso giusto e come controllare che funzioni davvero.
Cos’è l’object cache di WordPress
WordPress ha già al suo interno una cache degli oggetti: mentre costruisce una pagina, tiene in memoria opzioni, post, utenti e risultati delle query per non chiederli due volte. Il limite è che, per impostazione predefinita, questa cache vive solo per la durata della singola richiesta: alla visita successiva si riparte da zero e il database viene interrogato di nuovo.
WordPress però permette di sostituire questo meccanismo con uno persistente: basta un file chiamato object-cache.php nella cartella wp-content, detto drop-in. Quando c’è, WordPress salva i dati in un archivio esterno come Redis e li ritrova alle richieste successive. Il drop-in non si scrive a mano: lo installa un plugin di object cache.
Un effetto collaterale utile: con una object cache persistente attiva, WordPress salva anche i transient (dati temporanei che plugin e temi usano molto) in Redis invece che nella tabella delle opzioni del database, che così resta più leggera.
Prima di tutto: Redis attivo e PHP aggiornato
Controlla due cose:
- Redis deve essere attivo nel pannello DirectAdmin del tuo account, e devi conoscere il percorso del socket, che ha la forma
/home/tuoutente/.redis/redis.sock; - il sito deve usare una versione di PHP attuale, nelle quali l’estensione per Redis è già installata. Non è disponibile nella vecchia PHP 5.6.
Strada 1: con iWebLab Cache
Il nostro plugin iWebLab Cache per WordPress contiene un drop-in di object cache per Redis. È la via più semplice, perché:
- trova il socket da solo: ricava il nome del tuo account dal percorso del sito e cerca
/home/tuoutente/.redis/redis.sock, senza che tu debba scrivere nulla inwp-config.php; - installa il drop-in automaticamente quando il plugin viene attivato e Redis è disponibile, e lo rimuove se disattivi il plugin;
- usa un prefisso diverso per ogni sito, calcolato dal percorso di installazione: due WordPress sullo stesso account non si pestano i piedi;
- quando svuota la cache, cancella solo le chiavi del proprio sito, lasciando intatti gli altri siti che usano lo stesso Redis.
Nelle impostazioni avanzate del plugin trovi la sezione Object Cache (Redis). Lì vedi lo stato della connessione, il socket rilevato e le estensioni PHP disponibili, e puoi accendere o spegnere l’object cache con un interruttore. Se Redis non è stato ancora attivato nel pannello, l’interruttore resta disabilitato e il plugin te lo segnala.
Nella stessa sezione puoi impostare la scadenza predefinita dei dati che plugin e temi salvano senza indicarne una propria. Il plugin stesso suggerisce un valore di qualche minuto: è un buon compromesso tra velocità e memoria occupata. C’è anche il pulsante per svuotare l’object cache del sito.
Se in precedenza usavi l’object cache di LiteSpeed Cache, il nostro plugin la disattiva al momento dell’installazione per evitare conflitti, e la ripristina se rimuovi il drop-in.
Strada 2: con un plugin di terzi
Se preferisci un altro plugin di object cache compatibile con Redis, il principio è lo stesso: gli devi dire di collegarsi tramite socket Unix e non tramite indirizzo e porta. A seconda del plugin lo fai dalla sua pagina di impostazioni oppure con alcune costanti in wp-config.php, da aggiungere prima della riga che dice di smettere di modificare il file.
Per esempio, con il diffuso plugin «Redis Object Cache» la configurazione tipica è questa (verifica sempre i nomi esatti nella documentazione del plugin che usi):
define( 'WP_REDIS_SCHEME', 'unix' );
define( 'WP_REDIS_PATH', '/home/tuoutente/.redis/redis.sock' );
define( 'WP_REDIS_PREFIX', 'miosito:' );
Dopo aver salvato, attiva il plugin e abilita l’object cache dalla sua pagina: è in quel momento che il drop-in viene copiato in wp-content.
Il prefisso: perché è importante
L’istanza Redis è una per account. Se hai due o più siti nello stesso spazio e i plugin usano lo stesso prefisso, succedono cose strane: un sito può leggere le impostazioni dell’altro, mostrare menu sbagliati o, quando svuoti la cache di uno, perdere quella di tutti.
La regola è semplice: un prefisso diverso per ogni sito, breve e riconoscibile, per esempio il nome del dominio seguito dai due punti. Se il plugin lo consente, in alternativa puoi assegnare a ogni sito un numero di database Redis diverso. Con iWebLab Cache non devi fare nulla: il prefisso è già distinto per sito.
Un solo drop-in alla volta
Il file object-cache.php può essere uno solo. Se installi due plugin di object cache, l’ultimo che scrive il drop-in vince e l’altro mostrerà errori o stati incoerenti. Scegline uno e disattiva la funzione di object cache negli altri, compresi i plugin «tutto in uno» che la offrono come opzione.
Come verificare che funzioni
- Dal plugin: la pagina di stato deve indicare che Redis è connesso. Nel nostro plugin vedi la scritta «connesso»; se compare «drop-in presente, redis non risponde», il file c’è ma Redis non è raggiungibile.
- Da WordPress: in Strumenti › Salute del sito WordPress segnala, tra i suggerimenti, quando un sito potrebbe trarre vantaggio da una object cache persistente; con il drop-in attivo l’avviso scompare.
- Dalla navigazione: la differenza si sente soprattutto nella bacheca e nelle pagine per utenti collegati. Apri qualche schermata due volte di seguito: la seconda dovrebbe essere più pronta.
Se usi l’accesso SSH, che da noi è disponibile sulla porta 7530, puoi anche usare WP-CLI: il comando wp cache type indica quale object cache sta usando il sito.
Quando svuotare la cache
Di norma non serve: quando modifichi un contenuto, WordPress aggiorna da solo i dati in cache. Va svuotata invece quando un dato viene cambiato fuori da WordPress, per esempio con una modifica diretta al database da phpMyAdmin o dopo il ripristino di un backup del database: in questi casi il sito continuerebbe a leggere la copia vecchia in memoria. Usa il pulsante del plugin; il nostro svuota solo le chiavi del sito su cui ti trovi.
In sintesi
- Redis attivo nel pannello, PHP attuale.
- Un solo plugin di object cache, collegato al socket del tuo account.
- Un prefisso diverso per ogni sito dello stesso account.
- Verifica dallo stato del plugin e svuota la cache solo quando cambi dati fuori da WordPress.
Se usi uno dei nostri piani hosting WordPress e qualcosa non torna, apri un ticket indicando il sito e il plugin che usi: controlliamo noi.