Configurare una politica di cache CDN Cloudflare robusta è una delle attività di ingegneria a maggior impatto per ottimizzare la velocità di un sito web aziendale nel 2026. Molte piattaforme web soffrono di latenza elevata perché ogni richiesta utente deve viaggiare fino al server di database di origine per generare le pagine. Questa dipendenza dall’origine ritarda le metriche di velocità First Contentful Paint (FCP) e Largest Contentful Paint (LCP), mentre l’archiviazione dei layout di pagina statici e dei componenti degli asset nelle località edge di tutto il mondo garantisce risposte rapide e a bassa latenza dalla località edge più vicina. Questa guida analizza i meccanismi di cache, le regole Edge Cache TTL e le configurazioni di bypass dinamico tramite cookie.

[!TIP] Consiglio per l’ottimizzazione della cache: Evita di memorizzare nella cache le pagine HTML che contengono i dati degli utenti autenticati. Configura sempre le tue Cache Rules per bypassare la cache edge quando vengono rilevati cookie di sessione specifici (come i cookie WordPress o token di autenticazione personalizzati) nelle intestazioni della richiesta.

Punti chiave:

  • La cache CDN Cloudflare riduce le query al database del server backend, abbattendo i costi di hosting.
  • Le Cache Rules consentono agli sviluppatori di impostare valori TTL personalizzati in base ai tipi di contenuto e alle directory.
  • L’implementazione di regole Cache Everything richiede la configurazione di bypass dei cookie di sessione per evitare fughe di dati utente.
  • Servire le pagine statiche direttamente dalle località edge aiuta i siti web a superare i Core Web Vitals sui dispositivi mobili.

Configurazioni di cache: Page Rules vs. Cache Rules

Per ottenere il massimo dalle tue pipeline di distribuzione, devi scegliere il modello di controllo appropriato nella dashboard. Secondo le linee guida sulla cache dei Cloudflare Developer Docs , le vecchie Page Rules vengono sostituite dalle Cache Rules modulari. Gli sviluppatori dovrebbero quindi implementare queste configurazioni:

Per impostazione predefinita, le reti CDN memorizzano nella cache solo i formati multimediali, i fogli di stile e gli script. Di conseguenza, devi configurare tre opzioni fondamentali per gli asset:

  • Cache HTML: Per ottenere caricamenti di pagina istantanei, devi istruire il CDN a memorizzare nella cache la struttura del documento HTML. In questo modo si interrompono le query al database.
  • Intestazioni Cache-Control: Configura il tuo server backend Symfony o PHP per inviare direttive s-maxage personalizzate che indicano ai server edge per quanto tempo conservare le pagine. Inoltre, ciò consente regole TTL personalizzate.
  • TTL della cache del browser: Imposta durate di vita della cache del browser più brevi (ad es. 4 ore) per garantire che gli utenti ricevano gli aggiornamenti quando modifichi i layout del sito. Di conseguenza, ciò previene i problemi di disallineamento del layout.

Per i portali web interattivi, non puoi memorizzare nella cache tutte le pagine in modo universale. Devi quindi stabilire due regole di bypass dinamiche:

  • Bypass di sessione: Costruisci regole che istruiscono il CDN a bypassare la cache quando una richiesta contiene cookie di autenticazione o di sessione, in modo che gli utenti autenticati ricevano sempre risposte personalizzate mentre i visitatori anonimi continuano a essere serviti dalla cache edge.
  • Ordinamento delle stringhe di query: Configura la cache del database edge affinché ignori le variabili di analisi minori (come i tag UTM) durante la valutazione delle chiavi di cache. Di conseguenza, ciò previene la frammentazione della cache.

Per distribuire in sicurezza una strategia di cache edge aziendale, segui questa sequenza di validazione tecnica. Adotta questi quattro passaggi di ottimizzazione:

  1. Verifica le intestazioni HTTP: Assicurati che il tuo server di origine invii intestazioni Cache-Control e Vary pulite, senza blocchi di autenticazione.
  2. Redigi Cache Rules modulari: Configura Cache Rules mirate per conservare le directory di categorie statiche fino a 30 giorni.
  3. Crea eccezioni di autenticazione: Crea regole per bypassare la cache edge quando vengono rilevati cookie di login.
  4. Distribuisci webhook dell’API Purge: Configura le azioni di salvataggio nel database affinché attivino richieste automatizzate all’API Purge quando aggiorni le pagine.

Confronto delle prestazioni: cache edge vs. recupero all’origine

Per illustrare i vantaggi in termini di velocità, la tabella seguente dettaglia metriche di caricamento reali:

Metrica di prestazioneRecupero dal server di origine (senza cache CDN)Hit della cache edge (CDN attivo)Miglioramento di velocità previsto
Time to First Byte (TTFB)450 - 800 millisecondi15 - 35 millisecondiFino al 95% più veloce nella risposta iniziale del server
LCP mobile (immagine più grande)3.8 secondi (scarso)1.4 secondi (buono)Superare in modo pulito le metriche Core Web Vitals
Carico CPU all’origineElevato (ogni pagina interroga il database)Minimo (l’edge gestisce il 90% degli hit)Costi di hosting ridotti e maggiore stabilità

Prerequisiti

Prima di toccare la dashboard, assicurati di avere quanto segue:

  • Un dominio già instradato tramite proxy da Cloudflare (l’impostazione DNS nuvola arancione, non grigia/solo DNS).
  • L’accesso alla configurazione della tua origine – Nginx, Apache o il livello applicativo – per poter impostare le intestazioni di risposta.
  • Un token API con ambito Zone → Cache Purge se intendi automatizzare le operazioni di purge. Crealo in My Profile → API Tokens.
  • Un modo per ispezionare le intestazioni HTTP grezze: curl da riga di comando, o la scheda Network in Chrome DevTools.
  • Un URL di staging o un percorso a basso traffico su cui sperimentare prima di distribuire qualsiasi cosa all’intero sito.

Un piano Free o Pro è sufficiente per seguire ogni passaggio qui sotto. Le Cache Rules sono disponibili su tutti i piani, anche se alcune opzioni di cache-key e la Tiered Cache sono riservate ai livelli superiori.


Passaggio 1: Inviare le intestazioni Cache-Control corrette dall’origine

Cloudflare considera una risposta memorizzabile nella cache solo se la tua origine non lo vieta attivamente. Il motivo più comune per cui l’HTML non viene mai memorizzato nella cache è un’origine che restituisce un’intestazione Set-Cookie o un Cache-Control restrittivo a ogni richiesta.

Imposta direttive esplicite all’origine. In Nginx:

1location ~* \.(css|js|woff2|jpg|png|webp|svg)$ {
2    add_header Cache-Control "public, max-age=31536000, immutable";
3}
4
5location / {
6    # HTML: short browser life, long shared (edge) life
7    add_header Cache-Control "public, max-age=0, s-maxage=86400";
8}

La direttiva s-maxage si rivolge alle cache condivise come l’edge di Cloudflare, mentre max-age=0 mantiene il browser del visitatore in fase di riconvalida, così da non vedere mai HTML obsoleto dopo un deploy. Il token immutable sugli asset con fingerprint dice ai browser di non riconvalidarli mai.

Per una risposta guidata dall’applicazione (PHP o Symfony), esprimi la stessa intenzione nel codice:

1$response->setPublic();
2$response->setMaxAge(0);            // browser
3$response->setSharedMaxAge(86400);  // edge / s-maxage

Le risposte autenticate o personalizzate devono escludersi esplicitamente, altrimenti una regola troppo ampia potrebbe servire la pagina di un utente a un altro:

1Cache-Control: private, no-store

Passaggio 2: Rendere l’HTML idoneo alla cache con una Cache Rule

Per impostazione predefinita, Cloudflare contrassegna l’HTML come DYNAMIC e non lo archivia mai. Per cambiare ciò, crea una regola in Caching → Cache Rules → Create rule.

Scrivi un’espressione che corrisponda alle pagine che vuoi memorizzare nella cache escludendo qualsiasi contenuto dinamico:

1(http.host eq "example.com"
2  and not starts_with(http.request.uri.path, "/wp-admin")
3  and not starts_with(http.request.uri.path, "/cart")
4  and not starts_with(http.request.uri.path, "/checkout")
5  and not starts_with(http.request.uri.path, "/my-account"))

Quindi imposta le azioni della regola:

  • Cache eligibility: Eligible for cache – l’equivalente moderno del vecchio comportamento «Cache Everything».
  • Edge TTL: Use cache-control header if present, così che l’s-maxage impostato nel Passaggio 1 prevalga; ripiega su un valore fisso come 1 giorno se l’intestazione è assente.
  • Browser TTL: Respect origin.

Questo è il passaggio che la maggior parte delle guide salta, ed è quello che fa trapelare dati quando lo fanno. Aggiungi una seconda regola, posizionata sopra la regola di idoneità, che forzi un bypass ogni volta che è presente un vero cookie di sessione. Cloudflare valuta le Cache Rules dall’alto verso il basso, quindi una regola di bypass posta prima prevale sempre per i visitatori autenticati.

1http.cookie contains "wordpress_logged_in_"
2or http.cookie contains "wp-postpass_"
3or http.cookie contains "woocommerce_items_in_cart"
4or http.cookie contains "comment_author_"

Imposta l’azione su Bypass cache. Per stack non WordPress, sostituisci i nomi dei cookie con l’identificatore di sessione del tuo framework – PHPSESSID, laravel_session, connect.sid e così via. Definisci un ambito ristretto: far corrispondere qui un cookie di analisi troppo ampio come _ga bypasserebbe accidentalmente la cache anche per ogni visitatore anonimo.


Passaggio 4: Normalizzare la chiave di cache

Due URL che differiscono solo per un parametro di tracciamento dovrebbero condividere un unico oggetto in cache. All’interno della regola di idoneità, apri Cache Key → Query String, scegli Ignore specific query string parameters ed elenca le chiavi di analisi:

1utm_source, utm_medium, utm_campaign, utm_term, utm_content, fbclid, gclid

Ciò riduce /pricing?utm_source=newsletter e /pricing?gclid=123 a un’unica voce in cache, aumentando il tuo hit ratio invece di frammentarlo su migliaia di chiavi quasi identiche.


Come verificare un HIT o un MISS della cache

Non dare mai per scontato che una regola funzioni – misurala. Ogni risposta servita da Cloudflare porta un’intestazione cf-cache-status. Richiedi lo stesso URL due volte e osserva come cambia:

1curl -sI https://example.com/ | grep -i cf-cache-status
2# First request:  cf-cache-status: MISS
3# Second request: cf-cache-status: HIT

I valori che incontrerai e cosa significa ciascuno:

cf-cache-statusSignificatoCosa fare
HITServito direttamente dall’edgeFunziona come previsto
MISSNon ancora in cache; recuperato dall’origine e ora archiviatoRichiedi di nuovo per confermare che diventi un HIT
DYNAMICCloudflare l’ha ritenuto non memorizzabile nella cacheLa regola non corrisponde, o l’origine vieta la cache
BYPASSUna regola o un bypass tramite cookie ha saltato la cachePrevisto sulle richieste autenticate
EXPIREDTTL scaduto, riconvalidato con l’origineNormale; aumenta l’Edge TTL se accade troppo spesso
REVALIDATEDObsoleto, confermato ancora aggiornato tramite ETagNormale

Se vedi sempre e solo DYNAMIC, la regola di idoneità non si attiva. Verifica il nome host nell’espressione, poi controlla che l’origine non invii Cache-Control: private o un Set-Cookie sul documento HTML.


Errori comuni e risoluzione dei problemi

  • Un Set-Cookie su ogni risposta. Cloudflare non memorizza nella cache una risposta che imposta un cookie. I plugin di analisi, i token CSRF e gli strumenti di test A/B ne allegano spesso uno al documento HTML. Sposta quella logica in una richiesta asincrona, oppure rimuovi l’intestazione sui percorsi memorizzabili nella cache.
  • BYPASS su visitatori anonimi. Quasi sempre una regola di bypass tramite cookie troppo ampia – un cookie generico come _ga che corrisponde alla tua espressione. Limita il bypass ai soli veri cookie di sessione.
  • Pagine obsolete dopo un deploy. L’Edge TTL sta facendo il suo lavoro; hai semplicemente dimenticato di eseguire il purge. Attiva un purge mirato alla pubblicazione invece di ridurre il TTL a pochi secondi.
  • Intestazioni Vary ignorate. Cloudflare varia la sua cache solo su Accept-Encoding; non conserva copie separate per un Vary: User-Agent o Vary: Cookie arbitrario. Servi il markup specifico per dispositivo tramite CSS responsive o un Worker invece di affidarti a Vary.
  • Development Mode lasciato attivo. Bypassa la cache per tre ore e fa apparire silenziosamente ogni risposta come non memorizzabile nella cache. Conferma che sia disattivato prima di testare.

Considerazioni di produzione e purge automatizzato

Una volta che un singolo percorso si comporta correttamente, estendi la regola all’intero sito durante una finestra a basso traffico e monitora il tuo hit ratio in Caching → Overview – un sito statico in salute si attesta comodamente sopra il 90%.

Collega il tuo CMS in modo che esegua il purge solo di ciò che è cambiato anziché dell’intera zona. Un purge mirato per URL mantiene calde nella cache le pagine vicine:

1curl -X POST \
2  "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/purge_cache" \
3  -H "Authorization: Bearer ${CF_API_TOKEN}" \
4  -H "Content-Type: application/json" \
5  --data '{"files":["https://example.com/pricing"]}'

Richiama questo dal tuo hook di pubblicazione affinché l’aggiornamento di un editor vada in linea in pochi secondi mentre tutto il resto rimane in cache. Per cataloghi di grandi dimensioni, raggruppa gli URL correlati dietro un Cache Tag (Enterprise) o esegui il purge per prefisso, e abilita la Tiered Cache per aumentare l’hit ratio globale instradando i MISS attraverso un parent regionale prima che raggiungano la tua origine.


Collabora con una società di consulenza Cloudflare verificata nel Regno Unito

Prendere le giuste decisioni sulla cache protegge i tuoi server di origine e velocizza la distribuzione delle pagine per ogni visitatore. Mecanik offre servizi professionali di audit SEO tecnico e scalabilità dell’infrastruttura tramite la nostra pagina di sviluppo web . Siamo specializzati in integrazioni edge Symfony, Cache Rules Cloudflare personalizzate e deployment edge-native. Contattaci oggi stesso per fissare il tuo workshop di scoping tecnico.


Domande frequenti (FAQ)

Che cos’è la cache CDN Cloudflare? La cache CDN Cloudflare è il processo di archiviazione di copie statiche delle pagine, delle immagini e dei file di script del tuo sito web su server edge situati in tutto il mondo. Questa configurazione consente di servire le richieste degli utenti dal server fisico più vicino, riducendo i tempi di caricamento del sito web.

Come posso memorizzare nella cache le pagine HTML senza far trapelare i dati degli utenti? Per memorizzare l’HTML nella cache in sicurezza, configura una Cache Rule con un’azione «Bypass Cache» che si attiva quando cookie di sessione o di amministrazione sono presenti nelle intestazioni della richiesta. Questa configurazione garantisce che gli utenti del portale autenticati recuperino sempre il contenuto dinamico dal database di origine.

Qual è la differenza tra Edge TTL e Browser TTL? L’Edge TTL (Time-To-Live) determina per quanto tempo i server CDN di Cloudflare archiviano il tuo contenuto prima di richiedere una copia fresca al tuo server di origine. Al contrario, il Browser TTL determina per quanto tempo la cache locale del browser del visitatore conserva i file.

Perché la cache delle stringhe di query influisce sulle prestazioni del sito web? Se le stringhe di query (come i tag di tracciamento UTM) non vengono normalizzate, il CDN tratta ogni variante come un URL univoco, generando richieste duplicate al tuo server di origine. Configurare la normalizzazione della chiave di cache previene questa duplicazione di scansione.

La cache edge può migliorare i miei punteggi Core Web Vitals? Sì, servire l’HTML e gli asset multimediali direttamente dai server edge riduce al minimo i tempi di Time-to-First-Byte (TTFB) e Largest Contentful Paint (LCP). Di conseguenza, questa strategia di cache migliora direttamente il tuo ranking di velocità della pagina mobile.