Cos'è il controllo della cache? | Cache

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.

Obiettivi di apprendimento

Dopo aver letto questo articolo sarai in grado di:

  • Definire il controllo della cache
  • Descrivere la memorizzazione nella cache del browser
  • Delineare diverse direttive di controllo della cache

Argomenti correlati


Vuoi saperne di più?

Abbonati a theNET, il riepilogo mensile di Cloudflare sulle tematiche più discusse in Internet.

Fai riferimento all'Informativa sulla privacy di Cloudflare per scoprire come raccogliamo ed elaboriamo i tuoi dati personali.

Copia link dell'articolo

Cos'è il controllo della cache?

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.

Cos'è il caching del browser?

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.

Cosa sono 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:

  1. Informazioni sulla risorsa che viene richiesta
  2. Quale browser sta utilizzando il client
  3. Quali formati di dati accetterà il cliente

Le intestazioni delle risposte spesso includono informazioni su:

  1. Se la richiesta è stata soddisfatta o meno
  2. La lingua e il formato di tutte le risorse nel corpo della risposta.

Un'intestazione di controllo della cache può apparire sia nelle richieste che nelle risposte HTTP.

Cosa c'è in un'intestazione di controllo cache?

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.

Esempio di intestazione di 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:

cache-control: private

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.

cache-control: public

Al contrario, la direttiva "public" significa che la risorsa può essere archiviata da qualsiasi cache.

cache-control: no-store

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.

cache-control: no-cache

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.

cache-control: max-age

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.

cache-control: s-maxage

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.

Perché è importante il controllo della cache?

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.