Il controllo della cache determina il comportamento della memorizzazione nella cache di un sito Web, consentendo ai browser di sapere con quale frequenza aggiornare le risorse archiviate in locale.
Dopo aver letto questo articolo sarai in grado di:
Argomenti correlati
Cos'è un server di origine?
Time-to-live (TTL)
Cos'è una CDN?
Prestazioni delle CDN
Sicurezza TLS SSL delle CDN
Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.
Copia link dell'articolo
Il cache-control è un'intestazione HTTP che determina il comportamento del caching del browser. In poche parole, quando qualcuno visita un sito Web, il suo browser salverà determinate risorse, come immagini e dati di siti Web, in un negozio chiamato cache. Quando quell'utente visita nuovamente lo stesso sito Web, il controllo della cache imposta le regole che determinano se quell'utente avrà tali risorse caricate dalla sua cache locale o se il browser dovrà inviare una richiesta al server per nuove risorse. Per comprendere meglio il controllo della cache, è fondamentale avere una conoscenza di base del caching del browser e delle intestazioni HTTP.
Come spiegato sopra, il caching del browser è quando un browser Web salva le risorse del sito Web in modo da non doverle recuperare di nuovo da un server. Ad esempio, un'immagine di sfondo su un sito web potrebbe essere salvata localmente nella cache, così quando un utente visita quella pagina per la seconda volta, l'immagine verrà caricata dai file locali dell'utente e la pagina si caricherà molto più velocemente.
I browser memorizzeranno queste risorse solo per un periodo di tempo specificato, noto come time to live (TTL). Se un utente richiede una risorsa memorizzata nella cache dopo la scadenza del TTL, il browser dovrà contattare nuovamente il server e scaricare una nuova copia della risorsa. In che modo i browser e i server Web conoscono il TTL per ciascuna risorsa? È qui che entrano in gioco le intestazioni HTTP.
L'Hypertext Transfer Protocol (HTTP) delinea la sintassi per le comunicazioni sul World Wide Web e questa comunicazione consiste in richieste dai client ai server e risposte dai server ai client. Ciascuna di queste richieste e risposte HTTP viene contrassegnata da una serie di coppie chiave-valore chiamate intestazioni.
Queste intestazioni contengono molte informazioni importanti su ogni comunicazione. Ad esempio, un'intestazione di richiesta di solito contiene:
Le intestazioni delle risposte spesso includono informazioni su:
Un'intestazione di controllo della cache può apparire sia nelle richieste che nelle risposte HTTP.
Le intestazioni consistono in coppie chiave-valore separate da due punti. Per il cache-control, la “chiave”, o la parte a sinistra dei due punti, è sempre “cache-control”. Il “valore” è ciò che si trova a destra dei due punti, e possono esserci uno o più valori separati da virgole per il controllo della cache.
Questi valori sono chiamati direttive e determinano chi può memorizzare nella cache una risorsa e per quanto tempo tali risorse possono essere memorizzate nella cache prima che debbano essere aggiornate. Di seguito esaminiamo alcune delle direttive di controllo della cache più comuni:
Una risposta con una direttiva "private" può essere memorizzata nella cache solo dal client e mai da un agente intermediario, come una CDN o un proxy. Si tratta spesso di risorse contenenti dati privati, come un sito Web che mostra le informazioni personali di un utente.
Al contrario, la direttiva "public" significa che la risorsa può essere archiviata da qualsiasi cache.
Una risposta con una direttiva "no-store" non può essere memorizzata nella cache da nessuna parte, mai. Ciò significa che ogni volta che un utente richiede questi dati, è necessario inviare una richiesta al server di origine per ottenere una nuova copia. Questa direttiva è in genere riservata alle risorse che contengono dati estremamente sensibili, come le informazioni sui conti bancari.
Questa direttiva significa che le versioni memorizzate nella cache della risorsa richiesta non possono essere utilizzate senza prima verificare se esiste una versione aggiornata. Questo viene in genere fatto utilizzando un ETag.
Un ETag è un'altra intestazione HTTP che contiene un token univoco per la versione della risorsa al momento in cui è stata richiesta. Questo token viene modificato sul server di origine ogni volta che la risorsa viene aggiornata.
Quando un utente torna a una pagina con una risorsa "no-cache", il client dovrà sempre connettersi al server di origine e confrontare l'ETag sulla risorsa memorizzata nella cache con quello sul server. Se gli ETag sono identici, la risorsa memorizzata nella cache verrà fornita all'utente. In caso contrario, significa che la risorsa è stata aggiornata e il client dovrà scaricare una nuova versione da fornire all'utente. Questo processo garantisce che l'utente riceva sempre la versione più aggiornata di tale risorsa senza richiedere download non necessari.
Questa direttiva stabilisce il Time To Live (TTL), ovvero quanti secondi una risorsa può essere servita dalla cache dopo il download. Ad esempio, se l'età massima è impostata su 1.800, ciò significa che per 1.800 secondi (30 minuti) dopo che la risorsa è stata richiesta per la prima volta dal server, all'utente verrà fornita una versione memorizzata nella cache di tale risorsa nelle richieste successive. Se l'utente richiede nuovamente la risorsa dopo che i 30 minuti sono scaduti, il client dovrà richiedere una nuova copia dal server di origine.
La direttiva ‘s-maxage’ è specifica per le cache condivise come le CDN e stabilisce per quanto tempo tali cache possono continuare a fornire la risorsa dalla cache. Questa direttiva sostituisce la direttiva “max-age” per i singoli client.
Il caching del browser è un ottimo modo sia per preservare le risorse che per migliorare l'esperienza utente su Internet, ma senza il controllo della cache sarebbe molto fragile. Ogni risorsa su ogni sito sarebbe vincolata dalle stesse regole di memorizzazione nella cache, il che significa che le informazioni sensibili verrebbero memorizzate nella cache allo stesso modo delle informazioni pubbliche e le risorse aggiornate di frequente verrebbero memorizzate nella cache per lo stesso periodo di tempo di quelle che cambiano raramente.
Il controllo della cache aggiunge la flessibilità che rende davvero utile la memorizzazione nella cache del browser, consentendo agli sviluppatori di dettare il modo in cui ciascuna risorsa verrà memorizzata nella cache. Permette inoltre agli sviluppatori di impostare regole speciali per gli intermediari, il che spiega perché i siti che utilizzano una CDN, come Cloudflare CDN, tendono ad avere prestazioni migliori rispetto ai siti che non la utilizzano.