Chi Siamo Area Clienti Promo del Mese Dicono di Noi Portfolio FAQ Blog
Senza categoria

WP Super Cache: Object Cache e Integrazione con Redis/Memcached

Gianluca Gentile
Gianluca Gentile
· 10 min di lettura

WP Super Cache: Object Cache e Integrazione con Redis/Memcached

Mentre il page caching di WP Super Cache è straordinariamente efficace per i visitatori anonimi, esistono molte situazioni in cui le pagine non possono essere servite dalla cache: utenti loggati, pagine di amministrazione, carrello WooCommerce, risultati di ricerca, pagine con contenuto personalizzato. In tutti questi casi, WordPress deve eseguire il suo ciclo completo di elaborazione, incluse numerose query al database. È qui che l’Object Cache con Redis o Memcached entra in gioco, memorizzando in RAM i risultati delle query e delle operazioni più costose per velocizzare anche le pagine dinamiche.

Cos’è l’Object Cache di WordPress

WordPress include un sistema di Object Cache nativo attraverso la classe WP_Object_Cache. Questo sistema memorizza in un array PHP i risultati delle query al database, le opzioni del sito, i dati degli utenti e altri oggetti frequentemente utilizzati durante l’elaborazione di una singola richiesta. Tuttavia, il sistema nativo ha un limite fondamentale: la cache dura solo per la durata della singola richiesta PHP. Quando la richiesta termina, tutti i dati cached vengono persi e devono essere rigenerati per la richiesta successiva.

Per rendere l’Object Cache persistente tra le richieste, è necessario utilizzare un backend di storage esterno che mantenga i dati in memoria anche dopo la fine della richiesta PHP. I due backend più utilizzati sono Redis e Memcached, entrambi sistemi di storage in-memory ad alte prestazioni.

Redis vs Memcached: Quale Scegliere

Entrambi Redis e Memcached sono eccellenti per l’Object Cache di WordPress, ma presentano differenze importanti:

Redis:

Memcached:

Per la maggior parte delle installazioni WordPress, Redis è la scelta consigliata grazie alla sua versatilità, al supporto per la persistenza e all’ecosistema più ampio di plugin WordPress compatibili.

Impostazioni WP Super Cache e Object Cache

Come Funziona l’Object Cache Persistente

Quando l’Object Cache persistente è attivo, il flusso di una richiesta WordPress cambia significativamente:

  1. WordPress riceve una richiesta e inizia l’elaborazione
  2. Quando WordPress ha bisogno di un dato (es. le opzioni del sito), prima controlla se è presente in Redis/Memcached
  3. Se il dato è in cache (cache hit), viene restituito immediatamente dalla RAM, senza query al database
  4. Se il dato non è in cache (cache miss), viene recuperato dal database MySQL, restituito a WordPress e contemporaneamente salvato in Redis/Memcached per le richieste future
  5. Le richieste successive trovano il dato già in cache e non devono interrogare il database

Questo meccanismo è particolarmente efficace per le operazioni che WordPress esegue ad ogni richiesta, come il caricamento delle opzioni del sito (tabella wp_options con autoload), i dati dell’utente corrente, i metadata dei post e le informazioni sui plugin. Una singola richiesta WordPress può eseguire 50-100+ query al database; con l’Object Cache persistente, la maggior parte di queste viene servita dalla RAM in pochi microsecondi.

WP Super Cache e Object Cache: Complementari, Non Alternativi

È importante chiarire che WP Super Cache e l’Object Cache operano a livelli diversi e non sono in competizione:

I due sistemi si completano perfettamente:

Installare Redis sul Server

Prima di configurare l’Object Cache in WordPress, è necessario installare il server Redis sul sistema. Su hosting condiviso, questa operazione potrebbe non essere possibile (verifica con il provider). Su VPS e server dedicati, l’installazione è relativamente semplice:

Su Debian/Ubuntu:

Installa Redis con il gestore pacchetti del sistema operativo, quindi avvia il servizio e configuralo per l’avvio automatico. Il file di configurazione principale si trova in /etc/redis/redis.conf.

Configurazione consigliata per WordPress:

È fondamentale installare anche l’estensione PHP per Redis (php-redis o phpredis) per permettere a WordPress di comunicare con il server Redis.

Configurazione preload e Object Cache

Configurare l’Object Cache in WordPress

WP Super Cache non include nativamente il supporto per l’Object Cache persistente. È necessario utilizzare un plugin dedicato. Le opzioni più popolari sono:

Redis Object Cache (di Till Krüss): È il plugin più popolare per Redis con oltre 200.000 installazioni attive. Fornisce un file drop-in object-cache.php che sostituisce il sistema di Object Cache nativo di WordPress. La configurazione è semplice:

  1. Installa e attiva il plugin “Redis Object Cache” dalla directory WordPress
  2. Aggiungi le seguenti costanti al file wp-config.php (prima della riga “That’s all, stop editing”):
    • define(’WP_REDIS_HOST’, ’127.0.0.1’);
    • define(’WP_REDIS_PORT’, 6379);
    • define(’WP_REDIS_DATABASE’, 0); – Usa database diversi per siti diversi sullo stesso server
    • define(’WP_REDIS_PREFIX’, ’tuosito_’); – Prefisso per evitare collisioni tra siti
  3. Vai su Impostazioni → Redis e clicca “Enable Object Cache”
  4. Verifica che lo stato mostri “Connected”

W3 Total Cache: Offre supporto integrato per Redis e Memcached come backend dell’Object Cache, ma è un plugin più pesante e complesso. Se usi già WP Super Cache per il page caching, è preferibile usare un plugin dedicato come Redis Object Cache.

Impatto sulle Prestazioni

L’impatto dell’Object Cache persistente dipende dal tipo di sito e dal numero di query al database. Ecco alcuni dati indicativi:

Pannello di amministrazione WordPress:

Pagina WooCommerce (utente loggato):

Pagina blog (utente loggato con admin bar):

Monitoraggio dell’Object Cache

Per verificare che l’Object Cache funzioni correttamente e sia effettivamente utile, monitora queste metriche:

Stato dell’Object Cache e performance

Configurazione Avanzata di Redis

Per installazioni WordPress più complesse, considera queste configurazioni avanzate:

Database Redis separati per siti diversi: Se ospiti più siti WordPress sullo stesso server, assegna un database Redis diverso a ciascuno (Redis supporta 16 database, da 0 a 15). Questo evita collisioni tra le chiavi di cache dei diversi siti.

Socket Unix invece di TCP: Su server dove Redis e WordPress risiedono sulla stessa macchina, l’utilizzo di un socket Unix (/var/run/redis/redis.sock) invece della connessione TCP (127.0.0.1:6379) offre prestazioni leggermente migliori eliminando l’overhead del protocollo TCP.

Timeout e retry: Configura timeout appropriati per evitare che un problema di Redis rallenti l’intero sito. Se Redis non risponde entro il timeout, WordPress deve poter ricadere sul database MySQL senza errori visibili all’utente.

Gruppi di cache non persistenti: Alcuni gruppi di cache WordPress non dovrebbero essere persistenti (es. counts, plugins). Puoi configurare questi gruppi come non persistenti nel file wp-config.php con la costante WP_REDIS_IGNORED_GROUPS.

Memcached: Alternativa e Configurazione

Se il tuo hosting offre Memcached ma non Redis, la configurazione è simile. Il plugin più utilizzato è Memcached Object Cache di Ryan Boren. La configurazione richiede:

  1. L’estensione PHP memcached (con la “d”) o memcache installata
  2. Il server Memcached in esecuzione sul sistema
  3. Il file drop-in object-cache.php copiato nella directory wp-content/
  4. La configurazione degli endpoint Memcached nel file wp-config.php

Problemi Comuni e Soluzioni

Cache stale dopo aggiornamenti: Se dopo un aggiornamento di un post i dati vecchi persistono, potrebbe essere necessario svuotare la cache Redis. Usa il comando wp cache flush da WP-CLI o il pulsante “Flush Cache” nel pannello del plugin.

Errori di connessione Redis: Se Redis non è raggiungibile, WordPress ricade sul sistema di Object Cache non persistente. Tuttavia, i tentativi di connessione falliti possono aggiungere latenza. Verifica che Redis sia in esecuzione e che i parametri di connessione siano corretti.

Memoria Redis esaurita: Se Redis raggiunge il limite di memoria, inizierà a eliminare chiavi secondo la policy configurata. Monitora l’utilizzo e aumenta maxmemory se necessario.

Conflitto con altri plugin: Alcuni plugin implementano il proprio sistema di cache che potrebbe entrare in conflitto con l’Object Cache persistente. Verifica la compatibilità dopo l’installazione.

Conclusioni

L’Object Cache persistente con Redis o Memcached è il complemento perfetto per WP Super Cache. Mentre il page caching serve i visitatori anonimi con pagine HTML statiche velocissime, l’Object Cache accelera tutte le operazioni che richiedono l’esecuzione di WordPress, dal pannello di amministrazione alle pagine dinamiche per utenti loggati. La combinazione dei due sistemi garantisce prestazioni ottimali in ogni scenario.

Serie Completa: WP Super Cache

Vuoi configurare Redis o Memcached per il tuo sito WordPress? Il team di G Tech Group può installare e configurare l’Object Cache sul tuo server. Scopri anche il nostro hosting WordPress con Redis preconfigurato per prestazioni ottimali su ogni tipo di pagina.

Migliora il Tuo Sito WordPress

Scopri le nostre guide complete sugli altri plugin essenziali per WordPress:

#Memcached #Object Cache #performance #Redis #WP Super Cache