Cos’è la cache? Come i dati memorizzati nella cache velocizzano le operazioni.
Una CPU moderna può recuperare un valore dalla cache più vicina in meno di un nanosecondo. Raggiungere la memoria principale per lo stesso valore richiede circa cento volte più tempo. Quindi il chip fa la cosa più ovvia: mantiene una copia dei dati di cui probabilmente avrà bisogno proprio accanto a sé. Questa copia è la cache, e questo meccanismo si ripete a ogni livello dell'elaborazione, dal silicio del processore fino al server che ha fornito questa pagina. Questa guida spiega cos'è una cache, come funziona il caching, dove risiede silenziosamente e se vale la pena svuotarla.
Definizione di cache: cos'è realmente una cache
La cache è una memoria temporanea. Piccola, veloce e posizionata il più vicino possibile a ciò che ne ha bisogno. Contiene copie dei dati che il sistema prevede di utilizzare nuovamente, in modo che, al momento opportuno, possa recuperare la copia anziché ripetere un'operazione lenta o dispendiosa. Apri questa pagina una seconda volta e una buona parte di essa verrà caricata da una copia già presente sul tuo computer, non dal server.
La parola chiave qui è "temporaneo". I dati memorizzati nella cache non sono mai gli originali. Sono una copia, conservata esclusivamente per velocizzare il processo, e si può eliminare in qualsiasi momento. Cancellandola, non si perde nulla di valore. Il sistema si limita a risalire alla fonte originale e a ricostruire la copia. Il saldo del tuo conto bancario non è memorizzato nella cache; una copia della pagina web che lo mostra potrebbe esserlo. Questo divario tra la fonte originale e una copia usa e getta è il motivo per cui la cache può essere integrata in modo sicuro in qualsiasi sistema. Nel peggiore dei casi, se la copia è mancante o errata, il sistema la recupera dalla fonte e continua a funzionare.
Come funzionano le cache: hit, miss ed eviction
Ogni cache, ovunque, funziona con una sola domanda: ho già una copia di questo? Sì significa una risposta rapida. Fornisci la copia, salta il percorso lento, fatto. No significa che devi eseguire il lavoro lento una sola volta: recuperare dalla sorgente, restituire il risultato e conservare una copia in uscita in modo che le richieste future siano veloci. Questo è l'intero meccanismo. Il resto è una questione di gestione di due problemi complessi, ovvero cosa eliminare quando lo spazio è insufficiente e come evitare di restituire una copia obsoleta.
Cache hit vs cache miss
Trovato? Questo è un successo nella cache. Non c'è? Un errore nella cache, che costringe a un accesso più lento al server di origine. La percentuale di richieste che si concludono con un successo nella cache è chiamata tasso di successo (hit ratio) ed è il parametro che gli ingegneri monitorano maggiormente. Una rete di distribuzione di contenuti (CDN) che serve file statici come immagini e fogli di stile punta a un tasso di successo compreso tra il 95 e il 99%. Raggiungendo questo valore, quasi ogni visitatore riceve una copia del file presente nelle vicinanze, mentre il server di origine rimane praticamente inutilizzato. Un basso tasso di successo nella cache significa che il contenuto è perlopiù un elemento decorativo.
Quando la cache si riempie: politiche di sfratto
Una cache è volutamente piccola. L'archiviazione veloce ha un costo, quindi non c'è mai spazio per tutto e, una volta che la cache si riempie, qualcosa deve essere eliminato. La regola che determina l'elemento da eliminare è la politica di eliminazione. L'impostazione predefinita più comune è Least Recently Used (LRU): si elimina ciò che è rimasto inutilizzato più a lungo, scommettendo sul fatto che ciò che si è ignorato di recente continuerà a essere ignorato. Altri schemi tengono conto in modo diverso. Least Frequently Used (LFU) tiene traccia della frequenza con cui ogni elemento viene acceduto. First In First Out (FIFO) elimina semplicemente l'elemento più vecchio. Stessa scommessa, vestiti diversi. Ogni politica è in realtà una supposizione su quale copia mancherà di meno.
Mantenere le copie aggiornate: TTL e politiche di scrittura
Una copia è valida solo finché corrisponde all'originale. Pertanto, la maggior parte delle cache associa a ogni voce un valore TTL (Time-to-Live), ovvero un conto alla rovescia, trascorso il quale la copia viene considerata scaduta e deve essere ricontrollata o recuperata. Sul web, l'intestazione Cache-Control imposta questo valore. Il manuale di riferimento è l'RFC 9111 , e la sua direttiva max-age consente a una risposta di rimanere nella cache fino a un anno, o 31.536.000 secondi per la cifra esatta. Le operazioni di scrittura rappresentano l'altra metà del problema. La scrittura diretta (write-through) salva i dati contemporaneamente nella cache e nell'originale, il che è sicuro ma più lento. La scrittura inversa (write-back) salva i dati nella cache immediatamente e nell'originale in un secondo momento, il che è veloce ma lascia un breve intervallo di tempo in cui i due valori non coincidono. Bisogna scegliere il compromesso più adatto.

Tipi di cache: dalla CPU alla rete di distribuzione dei contenuti
Ecco il punto che la maggior parte delle spiegazioni tralascia. La cache del browser e la cache L1 della CPU sembrano due mondi diversi, ma in realtà si basano sullo stesso concetto, seppur a distanze diverse. Ogni livello mantiene copie dei dati, che richiedono un accesso lento, vicine a ciò che ne ha bisogno. Percorrendo la struttura dall'interno verso l'esterno, lo schema si ripete per tutto il percorso.
Cache di memoria: livelli di cache della CPU L1, L2, L3
La cache più veloce si trova direttamente sul processore. Le CPU moderne dispongono di tre livelli di cache basati su SRAM, un tipo di memoria molto più veloce della DRAM utilizzata per la memoria principale, ma anche molto più costosa per byte. La cache L1 è piccolissima e quasi istantanea, con poche decine di kilobyte per core e tempi di risposta di circa un nanosecondo. La L2 è più grande e leggermente più lenta. La L3 è ancora più grande e condivisa tra i core; l'Intel Core i9-14900K ne ha 36 MB, mentre l'AMD Ryzen 9 7950X3D ne ha ben 128 MB. Tutto ciò serve a colmare una lacuna: il recupero dei dati dalla L1 richiede meno di un nanosecondo, mentre la memoria principale DDR5 ne impiega circa 70, una differenza di circa cento volte. Le cache funzionano perché i programmi riutilizzano gli stessi dati e i dati che si trovano nelle vicinanze, un principio chiamato località di riferimento.
| Strato | Dimensioni tipiche | Tempo di accesso tipico | Cosa contiene |
|---|---|---|---|
| Cache L1 della CPU | 32-80 KB per core | ~0,7-1 ns | Le seguenti istruzioni e valori |
| Cache L2 della CPU | 0,5-2 MB per core | ~3-4 ns | Dati utilizzati di recente vicino al nucleo |
| Cache CPU L3 | 16-128 MB condivisi | ~10-20 ns | Dati condivisi tra i core |
| Memoria principale (RAM) | 8-64 GB | ~70-100 ns | Esecuzione di programmi e dati attivi |
| Archiviazione SSD | 256 GB - 4 TB | ~50-100 µs | File e sistema operativo |
| nodo edge della CDN | varia | ~20 ms sulla rete | Copie web vicino al visitatore |
| Server di origine | varia | ~100-200 ms tra regioni | La fonte della verità |
Cache del disco, del sistema operativo e delle applicazioni
Oltre all'hardware, il software gestisce le proprie cache. Il sistema operativo memorizza i dati a cui si accede frequentemente, come i file letti di recente, nella RAM libera, in modo che la loro riapertura sia istantanea. I database memorizzano nella cache i risultati delle query più comuni. Le applicazioni aggiungono un livello dedicato in memoria, spesso Redis o Memcached, che si interpone tra l'applicazione e il database e risponde alle richieste ripetute in microsecondi. Il compito è identico a quello della CPU: mantenere i dati più utilizzati in una memoria più veloce, in modo da non pagare due volte il costo della lentezza.
Cache lato server e CDN
Lo strato più esterno si estende attraverso Internet. Quando un server web memorizza nella cache le pagine completate, evita di ricostruirle per ogni visitatore. Una rete di distribuzione dei contenuti (CDN) va oltre, copiando tali risorse su server periferici distribuiti in tutto il mondo, in modo che ogni richiesta venga elaborata da una macchina fisicamente vicina all'utente. Una richiesta proveniente da un server periferico di una CDN può essere elaborata in circa 20 millisecondi, contro i 100-200 millisecondi necessari quando la richiesta deve attraversare continenti per raggiungere il server di origine. Questo modello domina ormai il web: entro il 2024, circa il 75% dei contenuti di terze parti veniva distribuito tramite una CDN.
Cache del browser: cosa memorizza il tuo browser web
La cache del browser è l'elemento con cui la maggior parte delle persone entra in contatto. Quando si carica un sito, il browser memorizza silenziosamente sul dispositivo alcuni elementi: l'HTML, i fogli di stile, gli script, le immagini, i font. Al ritorno, il browser legge questi file direttamente dal disco anziché scaricarli nuovamente, ed è per questo che la seconda visita a una pagina web si apre più velocemente della prima. E il logo del sito? Scaricato una sola volta, riutilizzato su ogni pagina in cui compare.
Ecco cosa mi colpisce: gran parte di quella velocità non viene sfruttata. Nel 2021, circa il 90,4% delle risposte web su desktop erano memorizzabili nella cache , eppure il 52% dei siti si posizionava ancora al di sotto del 25° percentile nel test standard di caching dei browser. La vittoria è lì, a portata di mano, e la maggior parte del web la ignora. Configurando correttamente la cache, i vantaggi sono immediati. Le visite successive diventano più veloci, il consumo di dati mobili diminuisce e il server di origine smette di gestire le stesse richieste ridondanti.

Vantaggi della cache: perché velocizza le operazioni
La memorizzazione nella cache è un compromesso. Si consuma un po' di memoria e si accetta un piccolo rischio di servire qualcosa di leggermente obsoleto, ma in cambio si ottengono velocità, carico inferiore e costi ridotti. Questi tre vantaggi sono il motivo per cui la memorizzazione nella cache è presente a ogni livello e non solo a uno.
La velocità è il vantaggio più evidente: servire una copia da una memoria locale è più conveniente che ricalcolare un risultato o trasferirlo attraverso una rete. Il secondo vantaggio è la riduzione del carico sul server di origine. Ogni richiesta a cui risponde una cache è una richiesta che il database o il server di origine non devono mai gestire, il che permette ai sistemi di rimanere operativi anche durante i picchi di traffico. Il terzo vantaggio è puramente economico: servire byte memorizzati nella cache da un nodo periferico è più economico che generarli ex novo e inviarli da un server centrale, e quando è necessario accedere ripetutamente ai dati, questo risparmio si moltiplica rapidamente.
I vantaggi per l'utente in termini di prestazioni dell'applicazione sono reali e misurabili. Una ricerca di Google del 2018 sui siti per dispositivi mobili ha rilevato che ridurre il tempo di caricamento di un solo secondo ha aumentato le conversioni fino al 27%, mentre uno studio del 2012 dell'Aberdeen Group, ampiamente citato, ha stimato che un ritardo di un secondo comporti un calo delle conversioni del 7%. Pagine più veloci fanno sì che gli utenti rimangano sul sito. La memorizzazione nella cache è uno dei modi più economici per raggiungere questo obiettivo.
| Tipo di cache | Dove vive | Cosa memorizza | Chi lo gestisce? | durata tipica |
|---|---|---|---|---|
| Cache della CPU (L1/L2/L3) | Sul processore | Istruzioni e dati importanti | Hardware, automaticamente | microsecondi |
| cache del browser | Il tuo dispositivo | HTML, CSS, JS, immagini, font | Il tuo browser web | Ore all'anno |
| Cache dell'applicazione | memoria del server delle applicazioni | Risultati della query, sessioni | Sviluppatori (Redis, Memcached) | Da secondi a ore |
| Cache del server/CDN | Server di calore in tutto il mondo | Pagine, contenuti multimediali, risposte API | Proprietario del sito e CDN | Per TTL di controllo della cache |
| cache DNS | Sistema operativo, router, resolver | Ricerca da dominio a IP | Il risolutore DNS | Da 5 minuti a 24 ore |
È opportuno cancellare i dati memorizzati nella cache? E quando?
Molti considerano la cancellazione della cache come una semplice incombenza da inserire in una lista di manutenzione. Meglio non pensarci. Si tratta in realtà di uno strumento di risoluzione dei problemi, niente di più. Nella maggior parte dei casi, è meglio lasciare i dati memorizzati nella cache, perché contribuiscono silenziosamente a velocizzare il caricamento di ogni sito web che si visita successivamente.
Quindi, quando vale la pena svuotare la cache? Onestamente, solo in tre situazioni. Un sito smette di funzionare o continua a mostrare una versione obsoleta memorizzata nella cache dopo un aggiornamento, e quella vecchia copia nella cache del browser è quasi sempre la causa; svuotare la cache forza un download pulito. Hai utilizzato un computer condiviso o pubblico e vuoi eliminare la traccia locale di ciò che hai visualizzato. Oppure il tuo telefono ha quasi esaurito lo spazio disponibile e hai bisogno di recuperarlo, dato che la cache del browser può arrivare a occupare un paio di gigabyte senza lasciare traccia. Al di fuori di questi casi, svuotare la cache non offre alcun vantaggio. Rallenta la tua prossima visita a ogni sito mentre il browser ricostruisce le sue copie, e alcuni browser ti disconnettono durante il processo. L'errore più comune è questo: svuotare la cache non elimina i cookie o le password salvate. Questi dati si trovano in un archivio separato e sopravvivono alla cancellazione della cache, a meno che tu non scelga esplicitamente di eliminarli.
| Sito web | Dove svuotare la cache |
|---|---|
| Cromo | Impostazioni, Privacy e sicurezza, Elimina dati di navigazione, Immagini e file memorizzati nella cache |
| Firefox | Impostazioni, Privacy e sicurezza, Cookie e dati di navigazione, Cancella dati |
| Safari | Impostazioni, Safari, Cancella cronologia e dati dei siti web |
| Bordo | Impostazioni, Privacy, Scegli cosa cancellare |
Cache, cookie e buffer: facciamo chiarezza
Tre parole, spesso confuse tra loro, tutte legate alla memorizzazione dei dati. Ognuna svolge una funzione diversa. Una cache memorizza copie dei contenuti per consentirne un accesso più rapido la volta successiva. Un cookie è una piccola nota che un sito lascia per ricordarsi di te: una sessione di accesso, un'impostazione della lingua, una preferenza salvata. Contiene l'identità dell'utente, non i contenuti. Un buffer è ancora diverso. Memorizza i dati in transito, come i pochi secondi di video che uno streaming carica prima del punto in cui stai guardando. Il modo più semplice per distinguerli è questo: i dati memorizzati nella cache rimangono disponibili per essere riutilizzati, un cookie ricorda chi sei e un buffer si svuota nell'istante in cui viene utilizzato.
Cosa ricordare riguardo alla cache e al caching
Una volta che si inizia a considerare la cache semplicemente come "un modo per conservare una copia di ciò che è lento vicino a dove serve", smette di apparire come una funzionalità hardware e comincia a sembrare un'abitudine che permea tutto il mondo dell'informatica, dal recupero di un file in 0,7 nanosecondi su una CPU alla copia di questa pagina memorizzata su un server edge vicino alla tua città. La lezione pratica è quella che il web non ha ancora imparato: gran parte di quella velocità è gratuita e la maggior parte dei siti continua a ignorarla. La prossima volta che una pagina si aprirà in un batter d'occhio, saprai esattamente quale copia ti ha risparmiato la fatica.