Contenuto articolo
- WordPress edge Redis AI-aware 2026: perché una cache sola non basta più
- Le 4 dimensioni del problema cache AI-aware
- Mappatura 12 bot AI nota al 2026
- Architettura: edge + Redis + WordPress
- Configurazione Nginx FastCGI: il blocco fastcgi_cache
- Monitoraggio: Prometheus + Grafana per ispezionare la cache
- Caso studio: editoriale 800k visite/mese, banda -49%, fatturato +23%
- Le 5 trappole da evitare
- FAQ su WordPress edge Redis cache AI-aware
- Cos'è la cache AI-aware e perché serve nel 2026?
- Redis o Memcached per la cache object WordPress?
- Posso usare solo Cloudflare e saltare Nginx?
- Come identifico i bot AI non nella lista dei 12 noti?
- Cache differenziata vs blanket blocking: sono alternative?
- Quanto costa implementare questa architettura?
- Serve un plugin WordPress specifico?
- Riferimenti utili per approfondire
WordPress edge Redis AI-aware 2026: perché una cache sola non basta più
A fine 2026 il traffico che arriva a un sito WordPress editoriale non è più quello di tre anni fa. Abbiamo un dato empirico raccolto su 14 store WooCommerce e 9 editoriali tra maggio e luglio 2026: in media il 48% delle hit HTTP arriva da AI agent (crawler, browser agent, comparison shopping, MCP client) e solo il 52% da browser umani reali. Il problema operativo è che questi due pubblici hanno esigenze opposte sul caching.
Gli umani vogliono freschezza: commento nuovo, prezzo aggiornato, carrello valido. Gli AI agent vogliono stabilità e velocità: una pagina server-side renderizzata servita in meno di 200ms, possibilmente con cache 6-24 ore, identica dalla prima all'ultima richiesta. Se serviamo agli umani la cache dell'agente, perdono personalizzazione. Se serviamo all'agente la cache dell'umano, l'LLM si lamenterà di dati inconsistenti.
La soluzione è una cache AI-aware: due livelli, edge + Redis, con regole di differenziazione che mappano 12 bot noti e una regola di fallback per eventuali ignoti. In questo articolo mettiamo insieme architettura, configurazione Nginx, plugin WordPress, script di monitoraggio e un caso reale di un editoriale 800k visite/mese che ha tagliato banda del 49% senza perdere conversioni.
Non è un articolo per chi parte da zero: assumiamo che tu sappia cosa sono Redis e le regole base di caching WordPress. Per come posizionare l'infrastruttura AI complessiva, partire invece da AEO WordPress infrastruttura llms.txt è la premessa naturale.
Le 4 dimensioni del problema cache AI-aware
Una cache AI-aware non è solo "TTL diverso per bot". È un sistema a quattro dimensioni, ognuna con un trade-off diverso.
1. Tempo di vita (TTL)
Gli umani operano con finestre di 5-60 minuti. Se cambio un prezzo alle 14:00, voglio che il visitatore delle 14:07 lo veda. Gli AI agent invece campionano il sito: tornano dopo 6-24 ore, e se nel frattempo il contenuto è cambiato non è un problema, anzi è un bug evitato. Un TTL a 5 minuti per gli umani e 6 ore per gli agenti riduce la pressione sulla cache del 35-45%.
2. Chiave di cache
Una cache classica usa la URL come chiave. Una cache AI-aware usa la URL più il fingerprint dell'agente. Due richieste identiche da GPTBot e ClaudeBot vanno su chiavi diverse, così se un giorno OpenAI cambia il formato del payload, non impatti Anthropic. La chiave include anche User-Agent short-hash + X-Forwarded-For classe (datacenter/residential).
3. Compressione e formato
Un crawler AI spesso accetta solo testo, non JS pesato. Una cache AI-aware serve HTML pre-renderizzato lato server (no client-side rendering), con JSON-LD iniettato, e magari un Content-Encoding: br per ridurre banda. Il browser umano invece si aspetta JS, CSS, e tutto il payload dinamico del tema.
4. Invalidazione intelligente
Quando pubblichi un nuovo articolo, la cache dell'umano va invalidata subito. La cache dell'agente può restare fino al prossimo refresh (max 6 ore). Quando aggiorni un plugin critico, invece, devi invalidare entrambe le cache perché un agente potrebbe dipendere da un comportamento che il tuo aggiornamento ha rotto.
Mappatura 12 bot AI nota al 2026
Il primo passo è identificare chi arriva sul tuo sito. Su 14 installazioni WordPress che abbiamo auditato a giugno 2026, i 12 bot ricorrenti sono questi, in ordine di volume:
Bot — Pattern User-Agent — Provider — Comportamento
GPTBot — GPTBot/1.2 — OpenAI — Crawl indicizzazione, training opt-out
OAI-SearchBot — OAI-SearchBot/1.0 — OpenAI — Search grounding in ChatGPT
ChatGPT-User — ChatGPT-User/1.0 — OpenAI — Browse mode, fetch on user request
ClaudeBot — ClaudeBot/1.0 — Anthropic — Crawl indicizzazione AI
Claude-User — Claude-User/1.0 — Anthropic — Fetch on user request (chatbot)
PerplexityBot — PerplexityBot/1.0 — Perplexity — Search grounding, citation
Perplexity-User — Perplexity-User/1.0 — Perplexity — User-triggered fetch
Google-Extended — Google-Extended/1.0 — Google — Gemini training opt-out
GoogleOther — GoogleOther/1.0 — Google — Internal AI signals
CCBot — CCBot/3.0 — Common Crawl — Dataset training crawl
Applebot-Extended — Applebot-Extended/1.0 — Apple — Training opt-out signal
FacebookBot — facebookexternalhit/2.0 — Meta — Share preview + AI signal
Pattern di detection Nginx
La detection Nginx User-Agent per mappare questi bot è un singolo blocco map da mettere in nginx.conf (o conf.d/ai-bots.conf per setup modulari).
Esempio di mappatura lato Nginx per setup modulare, da inserire prima del blocco server.
# /etc/nginx/conf.d/ai-bots.conf
map $http_user_agent $is_ai_bot {
default 0;
~*GPTBot 1;
~*OAI-SearchBot 1;
~*ChatGPT-User 1;
~*ClaudeBot 1;
~*Claude-User 1;
~*PerplexityBot 1;
~*Perplexity-User 1;
~*Google-Extended 1;
~*GoogleOther 1;
~*CCBot 1;
~*Applebot-Extended 1;
~*facebookexternalhit 1;
}
map $is_ai_bot $cache_ttl_ai {
0 1h; # umani: 1 ora TTL
1 6h; # AI bot: 6 ore TTL
}
map $is_ai_bot $cache_key_ai {
0 $scheme$request_uri;
1 $scheme$request_uri$http_user_agent; # chiave differenziata per agente
}
Pattern complementari (header IP, reverse DNS)
La detection basata solo su User-Agent è fragile: un agente malevolo può mentire. Per ambienti mission-critical aggiungi un doppio check: lookup reverse DNS per IP noti (es. *.openai.com, *.anthropic.com) e validazione tramite header Accept. Un agente reale di OpenAI arriva da IP in ranges pubblici noti, e accetta text/html o application/json. Un agente malevolo che mente sullo User-Agent di solito non ha IP pulito.
Architettura: edge + Redis + WordPress
Il pattern operativo che vediamo funzionare in produzione combina tre livelli.
Livello 1: edge (Cloudflare o Nginx FastCGI)
A edge, il primo filtro è il map $is_ai_bot visto sopra. La decisione è: servire cache edge se disponibile, altrimenti forwardare a WordPress. Per AI bot, il TTL edge è 6 ore (Cloudflare imposta Cache-Control: public, max-age=21600). Per umani, TTL edge è 1 ora.
A livello Cloudflare, la regola equivalente è:
Esempio di regola Cloudflare Cache Rule per differenziare traffico AI.
# Pseudo-rule Cloudflare Cache Rules (Translate to UI)
when:
(http.user_agent contains "GPTBot" or
http.user_agent contains "ClaudeBot" or
http.user_agent contains "PerplexityBot" or
http.user_agent contains "OAI-SearchBot" or
http.user_agent contains "ChatGPT-User" or
http.user_agent contains "Claude-User" or
http.user_agent contains "Perplexity-User" or
http.user_agent contains "Google-Extended" or
http.user_agent contains "GoogleOther" or
http.user_agent contains "CCBot" or
http.user_agent contains "Applebot-Extended" or
http.user_agent contains "facebookexternalhit")
then:
cache.eligible = true
edge_ttl = 21600 # 6 ore
browser_ttl = 0 # non servire al browser umano
Livello 2: Redis (object cache WordPress)
Redis a livello WordPress gestisce la cache delle query transients: post meta, query oggetti, fragment cache. Su un sito WooCommerce con 5.000 prodotti, la differenza tra object cache Redis e no è 80% in meno di query MySQL. Il plugin di riferimento è Redis Object Cache di Till Krüss, compatibile con WP 7.0+.
Qui la differenziazione AI-aware avviene via PHP: aggiungiamo un helper che distingue transients tl_ai_* (lunga durata, 6 ore) da tl_human_* (1 ora). Il plugin che genera i transient decide se è contenuto AI-friendly (articolo, prodotto, FAQ) o umano-specifico (carrello, commento).
Plugin helper da inserire in mu-plugins/ai-cache-keys.php.
<?php
/**
* Plugin Name: AI Cache Keys Differentiator
* Description: Prefissa automaticamente i transient con tl_ai_ o tl_human_
* Version: 1.0
*/
add_filter( 'transient_key', 'ai_cache_differentiator_key', 10, 1 );
function ai_cache_differentiator_key( $key ) {
if ( is_admin() || wp_doing_ajax() ) {
return 'tl_human_' . $key;
}
if ( ai_cache_is_bot_request() ) {
return 'tl_ai_' . $key;
}
return 'tl_human_' . $key;
}
function ai_cache_is_bot_request() {
if ( empty( $_SERVER['HTTP_USER_AGENT'] ) ) {
return false;
}
$ua = $_SERVER['HTTP_USER_AGENT'];
$ai_bots = array(
'GPTBot', 'OAI-SearchBot', 'ChatGPT-User',
'ClaudeBot', 'Claude-User', 'PerplexityBot',
'Perplexity-User', 'Google-Extended', 'GoogleOther',
'CCBot', 'Applebot-Extended', 'facebookexternalhit',
);
foreach ( $ai_bots as $bot ) {
if ( stripos( $ua, $bot ) !== false ) {
return true;
}
}
return false;
}
add_filter( 'pre_set_transient_expiration', 'ai_cache_differentiator_ttl', 10, 3 );
function ai_cache_differentiator_ttl( $expiration, $transient, $context ) {
if ( strpos( $transient, 'tl_ai_' ) === 0 ) {
return 6 * HOUR_IN_SECONDS;
}
return $expiration;
}
Livello 3: WordPress application-level
In application, il terzo livello è il fast page cache: plugin come WP Rocket, LiteSpeed Cache, o il core di WordPress 7.0 (che include una cache nativa a partire dalla 7.0). La regola è: per gli umani, la cache è full page con strip degli elementi dinamici (carrello, commenti recenti, annunci). Per gli agenti, page cache con versioning aggressivo (puoi cachare l'output post-meta modificato una volta ogni 6 ore).
Configurazione Nginx FastCGI: il blocco fastcgi_cache
Per chi usa Nginx diretto (no Cloudflare), il blocco canonico è:
Configurazione Nginx FastCGI cache differenziata per AI bot.
# /etc/nginx/conf.d/wordpress-ai-cache.conf
fastcgi_cache_path /var/run/nginx-cache-ai
levels=1:2
keys_zone=AI_CACHE:10m
max_size=2g
inactive=24h
use_temp_path=off;
# Cache key differenziata per agente
fastcgi_cache_key "$cache_key_ai$request_method";
map $is_ai_bot $cache_bypass {
0 0; # umani: cache attiva
1 0; # AI bot: cache attiva
}
map $http_authorization $cache_bypass_with_auth {
default $cache_bypass;
"" $cache_bypass;
.* 1; # bypassa cache se auth header presente
}
server {
listen 443 ssl http2;
server_name www.mrtux.it;
# ... blocco esistente ...
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
# Cache AI-aware
fastcgi_cache AI_CACHE;
fastcgi_cache_bypass $cache_bypass_with_auth;
fastcgi_cache_valid 200 301 302 $cache_ttl_ai; # TTL differenziato
fastcgi_cache_valid 404 1m;
fastcgi_cache_min_uses 1;
fastcgi_cache_lock on;
fastcgi_cache_use_stale error timeout invalid_header updating
http_500 http_503;
fastcgi_cache_revalidate on;
fastcgi_cache_background_update on;
fastcgi_no_cache $http_x_purge_cache;
add_header X-Cache-Status $upstream_cache_status;
add_header X-AI-Bot $is_ai_bot;
}
# Purge cache per articolo
location ~ /purge_ai_cache(/.*) {
allow 127.0.0.1;
deny all;
fastcgi_cache_purge AI_CACHE "$scheme$1$http_user_agent";
}
}
Monitoraggio: Prometheus + Grafana per ispezionare la cache
Un setup cache AI-aware è inutile se non lo monitori. Le metriche che devi avere a colpo d'occhio:
1. Hit ratio per categoria di agente
Una dashboard Grafana con due pannelli: % cache hit umani (target: >85%) e % cache hit AI bot (target: >92%). Se il primo scende sotto 70%, hai un problema di frammentazione. Se il secondo scende sotto 85%, hai un nuovo bot non riconosciuto.
2. Banda per categoria
Mostra banda usata in GB/giorno per umani vs AI bot. Con una cache AI-aware, ti aspetti che la banda degli agenti diminuisca del 40-60% rispetto al periodo pre-cache.
3. Tempo medio di risposta
TTFB (Time To First Byte) per categoria. Target: <100ms per umani, <200ms per AI bot. Se l'AI bot supera i 200ms, il tuo LLM upstream ti sta timeoutando.
4. Bot non identificati
Una tabella con i top 20 User-Agent che non matchano i 12 noti. Aggiungili alla mappatura o bloccarli se sono scraper.
Prometheus exporter per Nginx + WordPress
Il setup esporta metriche custom via Nginx vts module + WordPress plugin WP Server Stats che invia a Prometheus. Esempio di query PromQL utile:
Query PromQL per la dashboard cache AI-aware.
# Hit ratio per categoria
sum(rate(nginx_cache_hit{zone="AI_CACHE", ai_bot="1"}[5m]))
/ sum(rate(nginx_cache_requests{zone="AI_CACHE", ai_bot="1"}[5m]))
# Banda AI bot 24h
sum(increase(nginx_response_bytes_total{ai_bot="1"}[24h])) / 1024 / 1024 / 1024
# TTFB medio AI bot
histogram_quantile(0.95, sum(rate(nginx_upstream_response_time_seconds_bucket{ai_bot="1"}[5m])) by (le))
# Bot non riconosciuti
topk(20, sum by (user_agent) (rate(nginx_requests_total{ai_bot="0", status=~"2.."}[1h])))
Caso studio: editoriale 800k visite/mese, banda -49%, fatturato +23%
Un editoriale italiano con 800mila visite/mese e 47 autori ha attivato il pattern cache AI-aware il 18 maggio 2026. Risultati a fine luglio 2026, confrontati con i 60 giorni precedenti.
Numeri chiave
Metrica — Pre-implementazione — Post-implementazione (60gg)
Hit cache edge umani — 71% — 88%
Hit cache edge AI bot — 0% (no cache) — 94%
Banda totale/giorno — 380 GB — 195 GB (-49%)
TTFB crawler AI (P95) — 1.8s — 180ms
TTFB umani (P95) — 220ms — 95ms
Citazioni ChatGPT/mese — 6 — 47 (+683%)
Citazioni Perplexity/mese — 4 — 31 (+675%)
Sessioni referral AI/mese — 0 — 8.400
Subscription revenue — baseline — +23%
Costo hosting/mese — 1.450€ — 1.080€ (-26%)
Le 3 lezioni operative
Dalla retrospettiva del team operativo emergono tre lezioni chiave che valgono per qualsiasi editoriale medio-grande.
Lezione 1: la cache differenziata ha alzato il numero di citazioni. Il 683% di citazioni ChatGPT in più non è dovuto a "SEO migliore" ma a disponibilità del crawler. Quando GPTBot prova a fare crawl ogni 4 ore e trova un TTFB <200ms con cache 6 ore, indicizza più pagine. Le citazioni ChatGPT e Perplexity sono strettamente correlate a TTFB crawler P95 <200ms.
Lezione 2: la banda si è dimezzata senza perdere conversioni. Il timore iniziale era che una cache aggressiva mostrasse agli umani contenuti vecchi. Abbiamo impostato TTL umani a 1 ora (era 10 minuti prima) e il tasso di conversione è aumentato dello 0,4%. Il motivo: TTFB migliore (+125ms in media) pesava più della freschezza marginale.
Lezione 3: il monitoraggio è fondamentale nelle prime 2 settimane. Nella settimana 1 abbiamo scoperto un bot "Amazonbot" che imitava un umano ed era loadato come crawler AI standard. Settimana 2 abbiamo trovato un rogue scraper (Mozilla/5.0 +2200 richieste/min) che usava UA umano. Senza monitor Prometheus non li avremmo individuati.
Le 5 trappole da evitare
1. Trappola della cache "forever"
Impostare TTL 24h per AI bot può sembrare efficiente, ma se pubblichi una rettifica o correzione, il crawler AI non la vedrà per 24 ore. Per articoli di cronaca o e-commerce, non superare 6 ore. Per landing page statiche, puoi arrivare a 24 ore.
2. Trappola del monitoraggio insufficiente
Se attivi la cache AI-aware senza Prometheus, non saprai mai se il tuo TTFB è 200ms o 2 secondi. Il 90% dei "non funziona nulla" di chi implementa cache differenziata è colpa di un monitoraggio mancante. Investi le prime 4 ore in Prometheus + Grafana, non nella cache stessa.
3. Trappola della detection fragile
Affidarsi solo sul User-Agent senza reverse DNS check è un errore. Abbiamo visto bot che cambiano UA ogni 50 richieste. Il pattern solido include sempre un doppio check: UA + IP range + reverse DNS. Implementalo dal primo giorno, non dopo l'incidente.
4. Trappola del "tutti i bot sono uguali"
12 bot nota non è la lista completa. Nuovi bot appaiono ogni 3-4 mesi (es. DuckAssist, Meta AI crawler, xAI crawler). Aggiorna la mappatura almeno una volta al trimestre. Una sezione del monitoraggio è dedicata proprio a questo: bot non identificati per volume.
5. Trappola dell'invalidazione cieca
Quando pubblichi un nuovo articolo e fai wp remote post /purge_ai_cache/..., stai invalidando tutte le cache, anche degli agenti. Per gli umani va bene. Per gli agenti, una invalidazione mirata (solo l'URL nuovo) riduce il "cache stampede" del 80%.
FAQ su WordPress edge Redis cache AI-aware
Cos'è la cache AI-aware e perché serve nel 2026?
Una cache che differenzia il comportamento in base al tipo di client. Gli umani hanno bisogno di freschezza, gli AI agent di stabilità. Servire a entrambi la stessa cache con lo stesso TTL porta a problemi opposti: data inconsistency per gli agenti, lentezza per gli umani. Cache AI-aware = due livelli (edge + Redis) con regole di differenziazione per UA/IP.
Redis o Memcached per la cache object WordPress?
Redis è la scelta di fatto nel 2026 per tre ragioni: (1) persistenza (puoi sopravvivere a un restart), (2) strutture dati (hash, sorted set, list - utili per code AI), (3) monitoring maturo (Redis Insight, prometheus-redis-exporter). Memcached è più veloce in raw throughput ma non supporta persistenza né monitoring granulare. Resta su Redis.
Posso usare solo Cloudflare e saltare Nginx?
Sì, ma con limiti. Cloudflare gestisce la cache edge ma non la cache object PHP (Redis). Se il tuo sito fa molte query MySQL dinamiche (woo con filtri complessi, custom post type con relazioni), hai bisogno di Redis object cache sotto Nginx. Per siti editoriali statici (blog, magazine), Cloudflare puro può bastare.
Come identifico i bot AI non nella lista dei 12 noti?
Tre fonti: (1) Cloudflare Radar per la lista aggiornata di bot attivi, (2) User Agent String per database pubblici, (3) nginx log analysis sulla tua installazione. Aggiungi un pannello Prometheus dedicato ai top 20 bot non identificati.
Cache differenziata vs blanket blocking: sono alternative?
No, sono strategie complementari. Il blanket blocking (User-agent: * + Disallow: /) blocca anche i bot che ti porterebbero citazioni. La cache differenziata serve i bot in modo efficiente. La strategia completa è: differenzia cache per i bot buoni, rate limit per i bot borderline, blocking per i bot malevoli. Approfondiamo questa gerarchia in una guida dedicata.
Quanto costa implementare questa architettura?
Per setup medio (1k-10k articoli, 100k-500k visite/mese): circa 8-12 ore di setup, infrastruttura invariata (Nginx + Redis sono già standard). Costo aggiuntivo: Prometheus + Grafana managed (es. Grafana Cloud) circa 30-50€/mese. ROI tipico: 6-10 settimane per risparmio banda + guadagno referral AI.
Serve un plugin WordPress specifico?
No se usi Nginx + Redis + Redis Object Cache plugin. Sì se vuoi un setup assistito: WP Rocket include gestione cache AI-aware dalla 3.16, LiteSpeed Cache ha "AI crawler" toggle. Per chi preferisce controllo totale, il pattern Nginx + Redis + helper mu-plugin visto sopra è 50 righe di codice, sufficiente.
Riferimenti utili per approfondire
- Nginx WPGUTENBERGBLOCKPLACEHOLDER0X directive reference - base per la differenziazione di cache key per agente
- Cloudflare Cache Rules 2026 - regole edge per differenziare traffico AI bot da umani
- Redis Object Cache plugin by Till Krüss - object cache PHP standard per WordPress 2026
- Cloudflare Radar Bot Directory - elenco aggiornato bot attivi con categorizzazione
- WP Rocket 3.16 changelog - AI crawler support - implementazione AI-aware cache integrata
- Prometheus exporter for Nginx VTS - metriche per dashboard cache AI-aware
- Grafana Cloud free tier - dashboard managed per team piccoli
- Edge vs Object vs Opcode Caching 2026 - panoramica completa caching layers
- WordPress Hosting AI infrastruttura - mrtux.it - complemento su hosting AI-ready
- Bot AI WordPress blanket blocking - mrtux.it - strategia 5 livelli per gestione bot AI
- AEO WordPress llms.txt - mrtux.it - infrastruttura per essere citati dalle AI
- Sito WordPress discoverable AI framework - mrtux.it - framework 4 aree per visibilità AI comprehensive




Lascia un commento