Cache: cos’è, come funziona e come si ottimizza

Scritto da Webristle

Set 22, 2022

Settembre 22, 2022

Cos’è la cache? Si tratta di un sistema informatico che ha lo scopo di mantenere in memoria delle informazioni per rendere più veloce il tempo di risposta quando queste informazioni vengono richieste da un utente.

Impossibile sapere cosa vuol dire cache in modo univoco, poiché si tratta di un sistema che coinvolge molteplici sfere dell’informatica: browser, siti web, motori di ricerca e CMS.

che-cos-e-la-cache

Cosa sono le cache

Più in dettaglio, la cache è un sistema di conservazione le informazioni in un archivio di dati, per poi presentarle all’utente in modo più veloce nel momento in cui vengono cercate.

Essa è associata a una memoria principale che contiene realmente i dati. Nel momento in cui un dato viene richiesto dall’utente, una copia di questo dato viene prima cercata nella cache e presentata all’utente, se presente. Se la cache non contiene la copia del dato, allora quest’ultimo viene reperito dalla memoria principale e salvato nella cache nel caso servisse successivamente.

La memoria principale può essere costituita da un hardware (ad esempio RAM o disco rigido) ma anche un database distribuito come un DNS o il Web, casi in cui la memoria principale può essere modificata senza passare dalla cache. Questo potrebbe portare ad avere dati diversi nella memoria principale rispetto a quelli memorizzati dalla cache.

Questa discrepanza di dati tra cache e memoria principale viene affrontata diversamente in base alle tecnologie. I server proxy, ad esempio, interrogano la memoria principale per verificare se i dati sono ancora sincronizzati con la cache e quindi corretti, chiedendo al server http se una pagina è stata modificata successivamente alla sua memorizzazione; se è rimasta invariata, evitano di ripescarla dalla memoria principale e la ripropongono direttamente al client. I DNS, invece, ricorrono ad un sistema di scadenza dei dati memorizzati: se un dato presente in cache non è ancora scaduto, viene ugualmente utilizzato anche se non corrisponde più a quello contenuto nella memoria principale.

A cosa serve la cache

La cache serve a ridurre il carico di richieste che la memoria principale deve smaltire, allo scopo di migliorare le prestazioni del sistema. La cache ricorre a un algoritmo che stabilisce quali dati deve memorizzare e quali scartare, tenendo anche conto delle pagine utilizzate di recente, dell’adiacenza delle pagine e di tanti altri fattori.

Una cache è in grado di immagazzinare i dati memorizzati in base all’indirizzo (un blocco di memoria o di dati su disco fisso) o in base al “nome” (cache associativa, come una pagina web o DNS, ad esempio).

In base a quanto detto fino ad ora, è chiaro che esistano diversi tipi di cache a seconda di un determinato contesto, prosegui nella lettura per saperne di più.

Tipologie di cache

Le cache possono essere suddivise in memorie fisiche (memory cache, disk cache, Translation Lookaside Buffer-TLB) e memorie gestite da software che memorizzano dati temporaneamente in spazi riservati (page cache, system cache, application cache, database cache, web cache, browser cache, DNS cache).

Memoria cache

La cache memory è storicamente la prima cache utilizzata, si tratta di una piccola e veloce memoria installata direttamente su un processore (o nei suoi pressi) usata per memorizzare le istruzioni di un programma e i dati su cui effettuare le operazioni. Il suo scopo è quello di rendere più veloce l’accesso alle posizioni di memoria RAM usate con più frequenza e nei sistemi multiprocessori con memoria condivisa, per ridurre il traffico del sistema di comunicazione di informazioni e dalla memoria principale.

 

DNS Cache

Si tratta di un database temporaneo, gestito da un sistema operativo di un computer, in cui vengono memorizzati i record di tutte le visite più recenti, cioè una memoria delle recenti ricerche DNS a cui il computer può fare riferimento quando cerca di capire come caricare un sito web.

 

Page Cache

La page cache viene utilizzata per le pagine che provengono da un dispositivo di archiviazione secondario, come l’unità di un disco fisso (HDD) o un’unità a stato solido (SSD). Il sistema operativo mantiene una cache di pagina in porzioni altrimenti non utilizzate della memoria principale (RAM), questo permette un accesso più rapido ai contenuti memorizzati nelle pagine della cache, con un miglioramento complessivo delle prestazioni.

Solitamente, tutta la memoria fisica non allocata direttamente alle applicazioni viene utilizzata dal sistema operativo per la page cache. Poiché la memoria sarebbe altrimenti inattiva e viene facilmente recuperata quando le applicazioni lo richiedono, in genere non vi è alcuna riduzione delle prestazioni associate e il sistema operativo potrebbe persino segnalare tale memoria come “disponibile”.

Disk Cache

Una cache del disco è un meccanismo che ottimizza il tempo necessario per leggere o scrivere su un disco rigido. Di solito la cache del disco è inclusa come parte del disco rigido ma può anche essere una porzione specifica di memoria ad accesso casuale (RAM). La cache del disco contiene i dati che sono stati letti di recente e, in alcuni casi, aree di dati adiacenti a cui è probabile che si acceda in seguito.

Nel momento in cui avviene la richiesta dell’informazione, nel caso questa informazione fosse presente nella disk cache, si evita lo spostamento della testina di lettura del disco stesso, rendendo il recupero dell’informazione più veloce e contribuendo a ridurre l’usura del disco stesso.

Web Cache

La web cache è il caching di documenti web e ha lo scopo di limitare l’uso della banda e i tempi di accesso ad un sito. Il funzionamento della web cache consiste nella memorizzazione di copie dei documenti richiesti dagli utenti che successivamente, nel momento in cui sono nuovamente richiamati da richieste dagli utenti, vengono reperiti dalla cache. L’utilizzo della web cache va a discrezione del sito web, alcuni la usano e alcuni no.

Le web cache sono sistemi complessi che possono svolgere anche altre funzioni, come, ad esempio, quella di filtrare i contenuti, controllare gli accessi e l’autenticazione degli utenti.

Le tipologie di web cache si suddividono in server-side caching e client side-caching. Le prime, anche chiamate revers-caches o web accelerator, sono poste davanti al server per ridurre il loro carico; le seconde, dette anche forward cache, vengono usate in riferimento ad un gruppo di utenti locali.

 

Differenza tra caching statico e caching dinamico

Prima di spiegare questa differenza, è opportuno distinguere i contenuti statici da quelli dinamici. Per contenuto statico si intende qualsiasi file (file HTML o immagini) memorizzato un server che rimane identico ogni volta che viene restituito agli utenti. Al contrario, il contenuto dinamico cambia sulla base di determinati fattori che dipendono dall’utente, come ad esempio il dispositivo, l’ora o il luogo della visita. Esempi di contenuti dinamici sono i portali di news, oppure i social network, che presentano un feed diverso per ogni utente.

cashing-dinamico-caching-statico

Poiché le pagine web dinamiche non vengono immagazzinate come file HTML, ma gli script lato server generano un file HTML che risponde agli eventi causati dalle interazioni degli utenti e che viene inviato al client web, questi contenuti dinamici possono essere rilevati direttamente dal server di origine e non dalla cache.

Le nuove tecnologie, invece, consentono di offrire da una cache anche i contenuti dinamici. Ma come? Normalmente, la web cache memorizza una copia dei file statici per far sì che vanga restituito all’utente la volta successiva. I browser e le CDN (content delivery network) sono in grado di memorizzare nella cache il contenuto statico e renderlo agli utenti se continua a essere richiesto, questo perché il contenuto statico rimane uguale nel tempo.

Il contenuto dinamico, invece, ha origine da script che ne modificano le componenti dinamiche. Poiché lo script viene eseguito in una cache CDN e non in un serve di origine fisicamente distante, il contenuti dinamico può essere generato e distribuito da una cache: esso viene memorizzato nella cache senza essere fornito dal serve di origine, garantendo un tempo di risposta minore alle richieste dei client e velocizzando le pagine web dinamiche.

 

Google Cache

Con più precisione si tratta della cache dei motori di ricerca in generale, funziona mediante la memorizzazione delle copie di pagine web nei server di un motore di ricerca. Questa funzione è fondamentale nel momento in cui, per svariati motivi, la pagina richiesta non risulta disponibile, allora il motore di ricerca può mostrare quella salvata in memoria, rendendo il contenuto di un sito web sempre disponibile agli utenti.

Browser cache

La cache di un browser è un database di file utilizzato per immagazzinare le risorse scaricate dai siti web, come ad esempio immagini, contenuto testuale, HTML, javascript e CSS. Lo scopo della cache del browser è quello di utilizzare queste risorse memorizzate nel suo piccolo database per restituirle più velocemente nel momento in cui vengono richieste dall’utente, al fine di fornire all’utente una buona esperienza di navigazione.

cache-del-browser

 

Perché è importante ottimizzare la cache

Avere un buon sistema di caching è fondamentale per garantire ad un sito web l’efficienza delle prestazioni, soprattutto in termini di Core Web Vitals e velocità di caricamento, fattori essenziali per il ranking di Google e soprattutto per l’esperienza utente. In base alla ricerca di Google intitolata SOASTA, se il tempo di caricamento di una pagina passa da 1 a 3 secondi la frequenza di rimbalzo di una pagina arriva al 32%, viene stimata al 123% se il tempo di caricamento si estende oltre i 7 secondi.

I vantaggi del caching riguardano in particolare:

  • il miglioramento delle prestazioni dell’applicazione
  • ridotti costi dei database
  • riduzione del carico di back-end
  • prevedibilità delle prestazioni.

 

Best Practice di caching

Come è chiaro, avere un buon sistema di caching è fondamentale per il miglioramento delle prestazioni, solo l’efficienza delle perfomance garantisce un’esperienza utente gradevole e contribuisce al miglioramento delle conversioni.

Ecco una sintesi delle best practice sull’implementazioni della cache e alcune considerazioni.

  • Essere certi che ci sia una reale esigenza per la presenza di un sistema di cache, che sia giustificata in termini di costo, latenza e/o miglioramento della disponibilità.
  • Avere la garanzia che tutti i dati possano essere memorizzati nella cache, ossia utilizzabili su più richieste client.
  • Valutare con estrema razionalità il valore e i benefici che una cache può portare.
  • Pianificare rigorosamente la gestione della cache e monitorarne costantemente parametri e indicatori chiave.
  • Assicurarsi che il sistema di caching possa essere ampliata senza tempi di inattività o invalidazione.
  • Scegliere con criterio le dimensioni della cache, la policy di scadenza e la policy di espulsione ed eseguire continui test.
  • Garantire che il servizio sia resiliente nei momenti di indisponibilità della cache.
  • Considerare gli aspetti di sicurezza del mantenimento dei dati nella cache, inclusa la crittografia, la sicurezza del trasporto nella comunicazione un sistema di caching esterno e l’impatto degli attacchi di cache poisoning (attacco informatico che ha lo scopo di modificare la cache dei name server per mutare l’associazione indirizzo IP / nome del server) e gli attacchi a canale laterale.
  • Valutare come la cache gestisce gli errori considerare il ricorso ad una cache negativa con un diverso TT.

 

Molti servizi di Webristle ricorrono alle tecniche di caching,  se intendi migliorare le prestazioni del tuo sito o della tua app, non esitare a contattarci.

Articoli correlati

Nessun risultato

La pagina richiesta non è stata trovata. Affina la tua ricerca, o utilizza la barra di navigazione qui sopra per trovare il post.

Spear phishing: cos’è e come proteggersi

Spear phishing: cos’è e come proteggersi

Lo spear phishing rappresenta una minaccia sempre più sofisticata nel panorama della sicurezza informatica. Questa forma di attacco mirato va oltre le tecniche tradizionali di phishing, concentrandosi su individui specifici o aziende con un livello di precisione...

Zero Trust: cos’è e come migliora la sicurezza informatica

Zero Trust: cos’è e come migliora la sicurezza informatica

Cosa si intende per zero trust? Cosa significa approccio zero trust? Il termine "zero trust" si riferisce al modello di sicurezza che non ha fiducia nell'autenticità degli utenti, dei dispositivi o delle reti, fino a quando non sono stati verificati. Nessuno può...

Iscriviti alla nostra Newsletter

Ricevi consigli utili su come mantenerti sicuro nel mondo digitale una volta al mese!