La cache, nota anche come memoria tampone, è un componente hardware o software utilizzato per memorizzare (dati) temporaneamente in un ambiente informatico. Si tratta di una quantità di memoria più veloce utilizzata per migliorare le prestazioni dei dati a cui si accede di recente o frequentemente. I dati memorizzati nella cache vengono archiviati temporaneamente in un supporto di memorizzazione accessibile localmente al client e separato dalla memoria principale. La cache viene comunemente utilizzata dalla CPU (Central Processing Unit), dalle applicazioni, dai browser web e dai sistemi operativi.
La memoria cache viene utilizzata perché la memoria principale, di grandi dimensioni, non riesce a tenere il passo con le richieste degli utenti. La cache riduce i tempi di accesso ai dati, diminuisce la latenza e migliora l’input/output (I/O). Poiché quasi tutto il carico di lavoro delle applicazioni dipende dalle operazioni di I/O, la memorizzazione nella cache migliora le prestazioni delle applicazioni.
Quando un client cache tenta di accedere ai dati, controlla prima la cache. Se i dati vengono trovati, si parla di cache hit. La percentuale di tentativi che risultano in un cache hit è chiamata tasso di hit della cache.
I dati richiesti non trovati nella cache – situazione definita cache miss – vengono recuperati dalla memoria principale e copiati nella cache. Quali dati vengono eliminati dalla cache per fare spazio a quelli nuovi dipende dall’algoritmo di caching, dal protocollo di cache e dal sistema in uso.
I browser web come Safari, Firefox e Chrome utilizzano la cache del browser per migliorare le prestazioni dei siti web visitati di frequente. Quando un utente visita un sito web, i file richiesti vengono memorizzati nella cache per quel browser nella memoria del computer dell’utente.
Per recuperare una pagina visitata in precedenza, il browser ottiene la maggior parte dei file necessari dalla cache invece di accedere nuovamente al web server. Questo approccio è chiamato lettura dalla cache. Il browser client può leggere i dati dalla cache più velocemente di quanto possa rileggere i file dal sito web.
La memoria cache è importante per diversi motivi:
- L’utilizzo della cache riduce la latenza per i dati attivi. Ciò aumenta le prestazioni di un sistema o di un’applicazione.
- Reindirizzando l’I/O alla cache, si riducono le operazioni di I/O sulla memoria esterna e si riduce il carico sugli array di storage.
- I dati possono persistere negli array di storage tradizionali o nell’archiviazione esterna. Ciò mantiene la coerenza e l’integrità dei dati utilizzando funzionalità come gli snapshot memorizzati nella cache.
- La memoria flash, utilizzata per una parte del carico di lavoro, beneficia di una latenza inferiore. Ciò contribuisce a un utilizzo efficiente dei costi di archiviazione.
La memoria cache è integrata nella CPU o incorporata in un chip sulla scheda madre. Nei dispositivi più recenti, l’unico modo per aumentare la memoria cache è aggiornare la scheda madre e la CPU all’ultima generazione. Le schede madri meno recenti possono avere slot vuoti che possono essere utilizzati per aumentare la memoria cache.
La memoria cache viene utilizzata per memorizzare file temporanei, utilizzando componenti hardware e software. Un esempio di cache hardware è la cache della CPU. Si tratta di una piccola sezione di memoria sul processore del computer utilizzata per memorizzare le istruzioni del computer utilizzate di recente o frequentemente.
Molte applicazioni e software hanno anche una propria cache. Questo tipo di cache memorizza temporaneamente dati, file o istruzioni relativi all’applicazione per un rapido recupero.
Il browser web è un tipico esempio di cache applicativa. Come accennato in precedenza, i browser dispongono di una propria cache per memorizzare le informazioni delle precedenti sessioni di navigazione web da utilizzare nelle sessioni future. Gli utenti che desiderano rivedere un video di YouTube possono caricarlo più velocemente perché il browser accede al video dalla cache in cui è stato memorizzato dalla sessione precedente.
Molti altri sistemi utilizzano la cache, tra cui:
- Sistemi operativi, dove vengono memorizzate le istruzioni e i file utilizzati di frequente;
- Reti di distribuzione di contenuti (CDN), dove le informazioni vengono memorizzate lato server per fornire siti web più velocemente;
- Sistemi di nomi di dominio (DNS), dove può essere utilizzata per memorizzare le informazioni utilizzate per convertire i nomi di dominio in indirizzi IP (Internet Protocol); e
- Database, dove può ridurre la latenza nelle query al database.
Ci sono diversi vantaggi della memorizzazione nella cache, tra cui:
- Prestazioni: la memorizzazione dei dati nella cache consente al computer di funzionare più velocemente. Ad esempio, la cache del browser che memorizza i file delle precedenti sessioni di navigazione web velocizzerà l’accesso alle sessioni successive. La cache del database velocizza il recupero dei dati che altrimenti richiederebbero molto tempo e risorse per essere scaricati.
- Lavoro offline: la cache consente anche alle applicazioni di funzionare senza una connessione Internet. La cache dell’applicazione fornisce un rapido accesso ai dati a cui si è acceduto di recente o frequentemente. Tuttavia, la cache potrebbe non fornire accesso a tutte le funzionalità dell’applicazione.
- Maggiore efficienza delle risorse: oltre alla velocità e alla flessibilità, la cache aiuta i dispositivi fisici a preservare le risorse. Ad esempio, l’accesso rapido alla cache consente di risparmiare batteria.
La memorizzazione nella cache presenta anche degli svantaggi, come:
- Corruzione dei dati: la cache può essere danneggiata e rendere inutilizzabili i dati memorizzati. La corruzione dei dati può causare il crash delle applicazioni, come i browser, o la visualizzazione di dati errati.
- Prestazioni: la cache è in genere un piccolo archivio di memoria temporanea. Se troppo grande, può causare un calo delle prestazioni. Può anche consumare memoria di cui altre applicazioni potrebbero aver bisogno, influendo negativamente sulle prestazioni dell’applicazione.
- Informazioni obsolete: a volte la cache dell’applicazione visualizza informazioni vecchie o obsolete. Ciò può causare malfunzionamenti dell’applicazione o restituire informazioni fuorvianti. Se un sito web o un’applicazione viene aggiornato su Internet, l’utilizzo della versione memorizzata nella cache dalla sessione precedente non rifletterà l’aggiornamento. Questo non è un problema per i contenuti statici, ma lo è per i contenuti dinamici che cambiano all’interno o tra le sessioni.