Menu
Hosting Wordpress

Come configurare il caching del server per WordPress

Gianluca Gentile · · 5 min di lettura

Come configurare il caching del server per WordPress

I plugin di caching WordPress fanno un ottimo lavoro, ma il caching a livello server è su un altro piano. Funziona prima ancora che PHP venga eseguito, servendo le pagine direttamente dalla memoria del web server. Il risultato sono tempi di risposta di pochi millisecondi anziché centinaia. In questa guida ti spiego come configurare il caching del server per WordPress con Nginx FastCGI Cache, Redis Object Cache e Varnish.

Differenza tra caching plugin e caching server

Un plugin di caching come WP Rocket o WP Super Cache genera file HTML statici delle pagine e li salva su disco. Quando un visitatore richiede una pagina, PHP verifica se esiste una versione cache e la serve. Il processo è veloce ma coinvolge comunque l’esecuzione di PHP.

Il caching a livello server intercetta la richiesta prima che arrivi a PHP. Il web server (Nginx, Apache con Varnish) ha la pagina già pronta in memoria RAM e la serve direttamente. PHP non viene mai chiamato, il database non viene interrogato. È il livello di caching più veloce possibile.

I due livelli non sono in competizione: lavorano insieme. Il caching server gestisce le richieste ripetute, mentre il plugin di caching genera le pagine statiche e gestisce la purge intelligente della cache.

Nginx FastCGI Cache

Se il tuo server usa Nginx come web server (o come reverse proxy davanti ad Apache), FastCGI Cache è la soluzione più efficiente. Memorizza l’output di PHP-FPM direttamente nella memoria del server e serve le pagine senza coinvolgere PHP.

La configurazione base richiede di aggiungere queste direttive al file di configurazione Nginx:

# Definisci la zona di cache (nel blocco http)
fastcgi_cache_path /var/cache/nginx levels=1:2
 keys_zone=wordpress:100m inactive=60m max_size=1g;

# Nel blocco server
set $skip_cache 0;

# Non cachare per utenti loggati
if ($http_cookie ~* "wordpress_logged_in") {
 set $skip_cache 1;
}

# Non cachare le pagine admin
if ($request_uri ~* "/wp-admin/|/wp-login.php") {
 set $skip_cache 1;
}

# Attiva la cache nel blocco location ~ .php$
fastcgi_cache wordpress;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;

Questa configurazione crea una cache di massimo 1 GB che memorizza le pagine per 60 minuti. Le pagine admin e le richieste degli utenti loggati bypassano la cache, garantendo che vedano sempre il contenuto aggiornato.

Redis Object Cache

Redis è un database in-memory che può essere usato come cache degli oggetti WordPress. A differenza del page caching che salva l’intera pagina HTML, l’object cache memorizza i risultati delle query al database. Questo accelera le pagine dinamiche che non possono essere servite da cache statica: il pannello admin, le pagine WooCommerce con carrello, le aree riservate.

Per configurare Redis su WordPress:

  1. Installa Redis sul server: apt install redis-server su Debian/Ubuntu.
  2. Installa l’estensione PHP per Redis: apt install php-redis.
  3. Installa il plugin Redis Object Cache dalla dashboard WordPress.
  4. Il plugin rileva automaticamente Redis e abilita l’object cache.

Aggiungi in wp-config.php:

define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);

Redis è particolarmente efficace per siti con molte query al database: ecommerce, siti con membership, forum e siti multilingua. La dashboard WordPress stessa diventa notevolmente più reattiva con Redis attivo.

Varnish Cache

Varnish è un HTTP accelerator che si posiziona davanti al web server (Apache o Nginx) e serve le pagine dalla memoria RAM. È usato da siti ad alto traffico come Wikipedia e molti provider di hosting managed WordPress lo includono nella configurazione di default.

Varnish è estremamente potente ma la configurazione (tramite il linguaggio VCL) è complessa. Per WordPress, puoi usare configurazioni VCL pre-fatte che gestiscono correttamente il bypass per utenti loggati, pagine admin e risorse dinamiche. Il plugin Varnish HTTP Purge gestisce la purge automatica della cache quando pubblichi o modifichi un contenuto.

OPcache per PHP

Non è propriamente caching delle pagine, ma OPcache è essenziale per le performance di WordPress. OPcache memorizza il bytecode compilato dei file PHP in memoria, evitando la ricompilazione a ogni richiesta. Su un sito WordPress con decine di plugin, questo riduce significativamente il tempo di esecuzione PHP.

Verifica che OPcache sia attivo nel tuo php.ini con queste impostazioni raccomandate:

opcache.enable=1
opcache.memory_consumption=256
opcache.max_accelerated_files=20000
opcache.revalidate_freq=60

Queste impostazioni allocano 256 MB di memoria per il bytecode cache e rivalidano i file ogni 60 secondi. Per siti in produzione dove i file PHP cambiano raramente, puoi aumentare revalidate_freq a 300 o più.

Combinare i livelli di cache

La configurazione ideale per un sito WordPress ad alte prestazioni combina più livelli di cache:

  1. OPcache: accelera l’esecuzione PHP compilando il bytecode una sola volta.
  2. Redis Object Cache: memorizza le query al database, velocizzando le pagine dinamiche e il pannello admin.
  3. Nginx FastCGI Cache o Varnish: serve le pagine statiche direttamente dalla RAM senza coinvolgere PHP.
  4. CDN (Cloudflare, BunnyCDN): distribuisce le risorse statiche (CSS, JS, immagini) su server globali vicini ai visitatori.

Con tutti questi livelli attivi, un sito WordPress può servire migliaia di richieste al secondo con tempi di risposta inferiori a 50 millisecondi. La differenza rispetto a un sito senza caching server è enorme: da 2-3 secondi di TTFB a meno di 50ms. Questo si traduce in una migliore esperienza utente, un bounce rate più basso e un posizionamento migliore sui motori di ricerca.

Invalidare la cache correttamente

Il problema principale del caching server è l’invalidazione: quando pubblichi un nuovo articolo o modifichi una pagina, la cache deve essere svuotata per mostrare il contenuto aggiornato. Ogni sistema ha il suo meccanismo: Nginx FastCGI Cache usa la direttiva purge, Redis ha il comando FLUSHDB, Varnish usa le regole di ban nel VCL. I plugin di caching come WP Rocket e LiteSpeed Cache integrano automaticamente la purge per i rispettivi server. La configurazione corretta della purge è fondamentale per evitare che i visitatori vedano contenuti obsoleti.

Serve aiuto con la configurazione?

La configurazione del caching server richiede competenze di amministrazione di sistema. Se non hai esperienza con Nginx, Redis o Varnish, il team di SoccorsoWP può configurare il caching ottimale per il tuo server e il tuo sito. Apri un ticket e porta le performance al massimo livello.

Condividi: