L'header CF-Cache-Status (o X-Cache altrove) racconta cosa ha fatto la CDN con la tua richiesta:
- HIT – servita dalla cache edge: l'origine non è stata toccata (l'obiettivo)
- MISS – non c'era: presa dall'origine e ora cachata; qualche MISS è fisiologico per nodo/scadenza
- EXPIRED / REVALIDATED – c'era ma scaduta: ricontrollata sull'origine
- DYNAMIC – Cloudflare ha deciso che non si cacha (default per l'HTML: sorpresa frequente – di serie CF cacha asset statici, non le pagine)
- BYPASS – qualcosa ha detto di non cachare:
Cache-Control: no-store, un cookie di sessione, una page rule
Chi comanda davvero è Cache-Control dall'origine (s-maxage parla proprio alle CDN) più le regole edge. Il flusso di debug: curl -sI https://... | grep -i cache due volte di fila – se la seconda non è HIT, la risposta è negli header che l'origine manda. E per l'HTML statico che può stare in cache: cache everything + TTL, o una cache che controlli tu.