Come Escludere la REST API dalla Cache Server e CDN in Gutenberg
L’editor a blocchi Gutenberg ha trasformato la creazione di contenuti su WordPress. Questa interfaccia moderna lavora in modo asincrono. Per salvare testi, media o impostazioni, il sistema sfrutta costantemente le REST API.
I sistemi di caching servono ad accelerare il caricamento delle pagine web. Talvolta, però, una configurazione troppo aggressiva memorizza le risposte dinamiche dei post. In questa guida vedremo come escludere la REST API dalla cache per evitare blocchi improvvisi.
Quando il sistema memorizza per errore un endpoint JSON, Gutenberg non riesce più a comunicare. Questo fenomeno genera spesso l’inquietante errore di risposta JSON non valida. Se riscontri questa anomalia, consulta la nostra guida completa su come risolvere l’errore la risposta non è una risposta JSON valida.
Perché le chiamate REST API non devono finire nella cache
Le chiamate REST API di WordPress trasmettono dati personalizzati per ciascun utente. Ogni richiesta include chiavi di autenticazione e token di sicurezza unici chiamati nonce. Questi valori cambiano continuamente nel tempo.
Come comunica Gutenberg con il backend
Quando modifichi un articolo, Gutenberg invia richieste HTTP verso l’endpoint /wp-json/. Questo processo avviene in background senza ricaricare la pagina web. Il server analizza i permessi dell’utente e aggiorna il database.
La risposta del server deve essere sempre aggiornata e priva di filtri. Se ricevi una risposta memorizzata in precedenza, l’editor visualizzerà dati obsoleti. Di conseguenza, il salvataggio automatico fallirà all’istante.
I danni di una cache dinamica aggressiva
I server web moderni cercano di velocizzare ogni singola risorsa richiesta. Senza regole di esclusione specifiche, finiscono per salvare anche le risposte JSON autenticate. Ciò genera gravi anomalie funzionali:
- Impossibilità di pubblicare o aggiornare articoli e pagine.
- Mancata generazione delle miniature dei blocchi multimediali.
- Errori di autorizzazione improvvisi con codice HTTP 401 o 403.
- Messaggi continui di salvataggio fallito all’interno dell’editor.
Nota operativa: Non memorizzare mai gli endpoint dinamici. Le REST API destinate ad amministratori ed editor devono essere elaborate sempre in tempo reale dal server PHP.
Configurare l’esclusione a livello server: Nginx e Apache
Il primo passo concreto consiste nell’escludere la REST API dalla cache a livello di web server. Se utilizzi un server dedicato o un VPS, puoi intervenire direttamente sui file di configurazione principali.
Regola di bypass su Nginx (FastCGI Cache)
Nginx gestisce la cache FastCGI tramite direttive condizionali molto veloci. Apri il file di configurazione del tuo virtual host, situato solitamente in /etc/nginx/sites-available/. Inserisci la logica di esclusione prima del blocco PHP:
# Imposta il bypass della cache di default a zero
set $skip_cache 0;
# Bypassa le richieste POST
if ($request_method = POST) {
set $skip_cache 1;
}
# Non memorizzare le aree riservate o la REST API
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
# Esclusione specifica per la REST API di WordPress
if ($request_uri ~* "/wp-json/") {
set $skip_cache 1;
}
# Applica le direttive all'interno del blocco PHP
location ~ \.php$ {
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
}
Dopo aver salvato le modifiche, esegui il test della configurazione digitando nginx -t nel terminale. Se la sintassi è corretta, riavvia Nginx con il comando systemctl reload nginx.
Regole di esclusione su Apache (.htaccess)
Se il tuo hosting utilizza Apache o LiteSpeed, puoi intervenire tramite il file .htaccess. Inserisci queste righe nella cartella principale del tuo sito WordPress:
<IfModule Mod_Headers.c>
# Evita il caching per tutti gli endpoint REST API
<FilesMatch "^wp-json">
Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</FilesMatch>
</IfModule>
Questi header indicano al browser e ai proxy intermedi di non conservare alcuna copia locale. In questo modo Gutenberg riceverà sempre dati freschi.
Configurare le regole di esclusione su CDN Cloudflare
Anche a livello di CDN è imperativo escludere la REST API dalla cache per preservare l’autenticazione. Cloudflare offre strumenti flessibili come le Cache Rules per definire eccezioni granulari.
Creare una Cache Rule personalizzata
Segui questa procedura passo dopo passo per proteggere gli endpoint delle API:
- Accedi alla dashboard di Cloudflare e seleziona il tuo dominio.
- Nel menu laterale sinistro, clicca su Caching e seleziona Cache Rules.
- Clicca sul pulsante blu Create rule.
- Assegna un nome chiaro alla regola, ad esempio Bypass WP REST API.
- Nella sezione dei criteri di corrispondenza, imposta il campo URI Path.
- Seleziona l’operatore starts with e inserisci il valore
/wp-json/. - Nella sezione delle azioni sottostante, imposta il campo Cache eligibility su Bypass cache.
- Clicca su Deploy per attivare la regola sui nodi globali della rete.
Verificare i cookie di autenticazione
Molti amministratori usano regole di tipo Cache Everything per ottimizzare le prestazioni complessive. In tal caso, devi aggiungere una condizione supplementare per gli utenti loggati.
Verifica che la CDN non memorizzi le pagine quando è presente il cookie wordpress_logged_in_*. Questa semplice precauzione protegge l’intera interfaccia di amministrazione da pericolosi conflitti.
Esclusione tramite i principali plugin di cache per WordPress
Se gestisci il sito tramite un piano di hosting condiviso, i plugin rappresentano la soluzione più immediata. I principali strumenti includono già opzioni per bypassare percorsi specifici.
Configurazione su WP Rocket
WP Rocket riconosce in automatico molte chiamate di Gutenberg. Tuttavia, puoi forzare l’esclusione preventiva per evitare incompatibilità:
- Accedi alla bacheca di WordPress e clicca su Impostazioni > WP Rocket.
- Apri la scheda Regole avanzate.
- Individua la casella di testo Mai inserire in cache questi URL.
- Aggiungi la riga
/wp-json/(.*)all’interno del riquadro. - Scorri la schermata e clicca su Salva le modifiche.
Configurazione su LiteSpeed Cache
Il plugin LiteSpeed Cache offre un controllo meticoloso sulle risorse escluse. Vai su LiteSpeed Cache > Caching nel menu di WordPress e seleziona il tab Esclusioni.
Cerca il campo denominato Lista nera Do Not Cache Paths. Inserisci la stringa /wp-json/ e salva le impostazioni. Da questo istante, LiteSpeed non intercetterà più il traffico dell’editor.
Domande frequenti (FAQ)
Molti sviluppatori si chiedono se escludere la REST API dalla cache possa rallentare il sito?
No, l’impatto sul traffico complessivo è trascurabile. Le chiamate dell’editor coinvolgono solo gli utenti che lavorano nel pannello di controllo. I normali visitatori continueranno a visualizzare le pagine memorizzate nella cache.
Come posso verificare gli header HTTP restituiti dalle REST API?
Apri la scheda Network negli strumenti per sviluppatori del browser. Seleziona una chiamata indirizzata a /wp-json/ e analizza la sezione Response Headers. Devi visualizzare l’intestazione Cache-Control: no-cache o uno stato di bypass CDN.
I plugin di sicurezza possono interferire con le REST API?
Sì, alcuni firewall bloccano le richieste ritenendole sospette. Verifica che il tuo plugin di sicurezza non contenga regole che limitano le chiamate verso /wp-json/ per gli utenti amministratori.
