Una cache è una posizione che memorizza temporaneamente i dati per un recupero più rapido quando qualcosa deve accedervi. Il caching si riferisce al processo di memorizzazione di questi dati. Potresti anche aver sentito usare il termine cache in contesti non tecnici, come luogo in cui conservare qualcosa per comodità. Ad esempio, campeggiatori ed escursionisti possono cache una scorta di cibo lungo un sentiero. Ma vediamo più da vicino cosa significa la memorizzazione nella cache online.
In un mondo perfetto, un utente che visita il sito web avrebbe tutte le risorse di dati necessarie per visualizzare rapidamente il sito archiviate localmente. Tuttavia, le risorse si trovano altrove, forse in un data center o in un servizio cloud, e il loro recupero comporta un costo. Mentre l'utente paga in termini di latenza, ovvero il tempo necessario per generare e caricare le risorse, tu paghi un costo monetario. Le tariffe includono non solo il costo dell'hosting dei tuoi contenuti, ma coprono anche il cosiddetto costo di uscita; l'addebito per lo spostamento di tali contenuti fuori dallo storage quando richiesto dai visitatori. Più traffico riceve il sito web, più devi pagare per consegnare contenuti in risposta alle richieste, molte delle quali possono essere duplicate.
È qui che entra in gioco la memorizzazione nella cache: ti consente di archiviare copie dei tuoi contenuti per velocizzarne la distribuzione utilizzando meno risorse.
Come funziona il caching
Per capire come funziona la memorizzazione nella cache, dobbiamo prima capire come funzionano le richiesta e le risposta HTTP. Quando un utente fa clic su un link o inserisce l'URL del tuo sito web nella barra degli indirizzi, viene inviata una richiesta dal browser (il client) alla posizione in cui si trova il contenuto (il tuo server di origine). Il server di origine elabora quindi la richiesta e invia una risposta al client.

Anche se può sembrare che ciò avvenga istantaneamente, in realtà il server di origine impiega tempo per elaborare la richiesta, generare la risposta e inviarla al client. Inoltre, per il rendering del tuo sito web sono necessarie molte risorse diverse, il che significa che devono essere inviate più richiesta per tutti i diversi dati che compongono il tuo sito, incluse immagini, pagine web HTML e file CSS.
A questo punto, entra in gioco la cache locale dell’utente. Il browser può memorizzare nella cache alcuni asset statici, come l'immagine dell'intestazione con il logo e il foglio di stile del sito, sul dispositivo per contribuire a migliorare le prestazioni la volta successiva che accede al sito. Tuttavia, questo tipo di cache è utile solo per quell'utente.
Se vuoi memorizzare nella cache le risorse per ogni utente che visita il tuo sito, dovresti prendere in considerazione una cache remota come un proxy inverso.
Quali sono i diversi tipi di caching?
Esistono diversi tipi di caching impiegati a vari livelli dell'infrastruttura Internet, ciascuno con uno scopo specifico. Esploriamo i diversi tipi di cache e vediamo come contribuiscono a rendere più fluida l'esperienza di navigazione.
1. Memorizzazione nella cache della Rete di distribuzione dei contenuti
La memorizzazione nella cache della Rete di distribuzione dei contenuti riduce la latenza consentendo di consegnare i contenuti da una posizione più vicina all'utente, migliorando significativamente i tempi di caricamento. Funziona memorizzando copie dei contenuti su edge server distribuiti in tutto il mondo. Ogni volta che un utente richiede dei contenuti, la CDN li fornisce dal server edge più vicino, invece di attendere la risposta del server di origine. Ciò riduce il carico di lavoro sul server di origine e supporta un volume di traffico più elevato distribuendo le richieste su più server.
2. Caching lato server
A differenza del caching della Rete di distribuzione dei contenuti, il caching lato server memorizza copie di dati pronte all'uso sul server di origine, evitando che il browser dell'utente debba richiedere nuovamente ogni contenuto ogni volta che carica una pagina. Questa capacità di memorizzare oggetti dati riutilizzabili riduce al minimo il numero di query al database e migliora le prestazioni del sito. La memorizzazione nella cache lato server si presenta in diverse forme, tra cui:
Memorizzazione nella cache delle pagine: conserva una copia delle pagine HTML
Memorizzazione nella cache degli oggetti: mantiene gli oggetti dati riutilizzabili
Caching opcode: Memorizza il codice PHP precompilato
Caching del database: Memorizza nella cache i risultati delle query del database
Il caching lato server viene usato anche per molto più che i soli contenuti, con copie di dati che vanno da pagine web full a singole query di database.
3. Caching DNS
La risoluzione DNS (Domain Name System) è il processo che i browser web usano per tradurre un nome di dominio, come www.Fastly.com, nell'Indirizzo IP specifico del server di origine che ospita il sito web. I browser web usano la memorizzazione nella cache DNS per aumentare la velocità di questo processo, poiché memorizza localmente i risultati delle query DNS, consentendo di risolvere più rapidamente le richiesta nelle visite future. In sostanza, prima di controllare i server DNS globali, il browser controlla la propria cache DNS per vedere se conosce già l'Indirizzo IP corretto. Questo riduce significativamente il tempo necessario per risolvere i nomi di dominio, velocizzando l'accesso al sito web.
A differenza dei due precedenti tipi di caching che abbiamo trattato, il caching DNS è localizzato per gli utenti, non è basato su server. Viene inoltre utilizzato specificamente per risolvere i nomi di dominio, invece di consegnare contenuti o semplificare le query del database.
4. Memorizzazione nella cache dei contenuti
Il content caching è una categoria di caching più generale che si riferisce alla duplicazione e allo storage di più tipi di contenuti web per servire gli utenti in modo più efficiente. Il caching dei contenuti avviene a livello di server (come nel caching lato server e nel caching della Rete di distribuzione dei contenuti). Tuttavia, può verificarsi a vari altri livelli, tra cui:
Cache del browser: Memorizza i contenuti web localmente sul dispositivo dell’utente, per consentire un ricaricamento più rapido quando si accede nuovamente al sito in seguito.
Caching proxy: Il contenuto web viene memorizzato su server intermediari (proxy) che si trovano tra l'utente e il server di origine sulla rete.
Memorizzazione nella cache del gateway: Memorizza una copia dei dati nei gateway all'interno della rete di un'organizzazione.
La memorizzazione nella cache dei contenuti è altamente variabile, avviene a più livelli e copre un'ampia gamma di tipi di contenuti, tra cui immagini, video e pagine HTML full. Rendendo le copie dei contenuti più facilmente accessibili, il caching dei contenuti offre agli utenti un’esperienza di navigazione più rapida e fluida, consentendo ai siti di caricarsi in modo più efficiente e riducendo l’uso complessivo della larghezza di banda sulla rete.
Rete di distribuzione dei contenuti e caching
Poiché la memorizzazione nella cache funziona mantenendo copie dei dati a portata di mano per un uso successivo, i sistemi di rete devono sapere che tali copie esistono già. Quando il contenuto viene trovato nella cache, si verifica un “cache hit”. I cache hit attivano automaticamente la consegna del contenuto direttamente dal server edge all'utente, con conseguenti tempi di caricamento più rapidi. Per “rapporto di cache hit” si intende la percentuale di volte in cui una query produce un cache hit.
Le Rete di distribuzione dei contenuti in genere hanno un tasso di hit della cache più elevato rispetto ad altri sistemi di caching lato server. Questo perché distribuiscono numerosi server edge a livello globale, posizionati strategicamente vicino all'utente finale. A causa dell'ampia base di utenti servita tipicamente da una Rete di distribuzione dei contenuti, c'è sempre un'alta probabilità che un utente in una regione geografica simile abbia già fatto sì che una copia dei dati venga memorizzata nel server edge di quella regione.
Tuttavia, un cache hit non è sempre il risultato di una richiesta dell'utente. Ci sono momenti in cui il server non è in grado di consegnare il contenuto dall'edge e deve, pertanto, recuperarlo dal server di origine. Questo si chiama “cache miss” e può verificarsi per vari motivi:
Prima richiesta (cache fredda)
Invalidazione o eliminazione della cache
Limitazioni di capacità
Aggiornamenti dei contenuti
Un cache miss si verifica anche a causa di contenuti scaduti. Il contenuto viene memorizzato nella cache su una Rete di distribuzione dei contenuti in base a un valore Time-To-Live (Time-To-Live). Quando quel valore temporale scade, il contenuto viene eliminato dalla cache. Gli sviluppatore e gli ingegnere di rete impostano i valori di Time-To-Live in base al tipo di contenuto memorizzato nella cache. Il contenuto dinamico, come gli articoli di giornale, tende ad avere un valore di Time-To-Live breve, da pochi secondi a pochi minuti. Al contrario, le cache della Rete di distribuzione dei contenuti tendono ad avere valori di Time-To-Live più lunghi, da giorni a settimane, perché il contenuto, come immagini, video, CSS e dati JavaScript, è statico.
Dovresti svuotare la cache?
Svuotare la cache può essere vantaggioso in determinate situazioni, ma non è sempre necessario o consigliato. Di seguito, abbiamo evidenziato alcuni dei motivi più comuni per cui dovresti cancellare la cache.
Libera storage
A livello locale, i dati nella cache possono accumularsi nel tempo e occupare troppo spazio di storage sul sistema. Ad esempio, questo può essere particolarmente problematico per dispositivi personali come laptop o netbook che hanno una capacità di storage limitata. Cancellando la cache, spesso puoi liberare prezioso spazio di storage, contribuendo a far funzionare il dispositivo in modo più fluido.
Risoluzione dei problemi di prestazioni
I dati nella cache possono danneggiarsi o diventare obsoleti nel tempo. Ciò può causare un caricamento più lento dei sito web o problemi di funzionamento, impedendoti di accedere alle funzioni chiave. Spesso puoi risolvere questi problemi e rimuovere i file danneggiati o obsoleti cancellando la cache.
Migliora la privacy
I dati nella cache possono includere informazioni sensibili come credenziali di accesso, cronologia di navigazione o altri dati privati. Cancellare la cache è un modo rapido per proteggere queste informazioni private rimuovendole dal sistema.
Tuttavia, ci sono anche situazioni in cui cancellare la cache potrebbe non essere necessario o consigliabile.
1. Perdita di dati
Quando un utente svuota la cache, elimina i dati, il che aiuta i sito web e le applicazione a caricarsi più velocemente. Lo svantaggio dello svuotamento della cache è che i sito web e le applicazione dovranno ricaricare queste risorse da zero. Questo può comportare tempi di caricamento più lenti finché la cache non viene ricostruita.
2. Correzione temporanea
Cancellare una cache può risolvere alcuni problemi di prestazioni, ma spesso la soluzione è solo temporanea. Se il problema sottostante non viene risolto, i problemi di prestazioni potrebbero ripresentarsi una volta che la cache viene ricostruita. È fondamentale identificare e affrontare la causa principale per ottenere una soluzione a lungo termine.
3. Perdita dei benefici in termini di prestazioni
Uno dei principali beneficio del caching è il miglioramento delle prestazioni. La rimozione dei dati nella tua cache comporta la perdita di questo valore aggiunto.
In che modo Fastly usa la memorizzazione nella cache?
Fastly utilizza la memorizzazione nella cache nella sua Rete di distribuzione dei contenuti per accelerare la distribuzione dei tuoi contenuti al tuo pubblico. Memorizzando copie esatte dei tuoi contenuti sui nostri server in tutto il mondo, riduciamo la latenza e il carico del server per garantire che i tuoi utente ottengano l’accesso più rapido dal server più vicino.
Le funzionalità di caching di Fastly includono Instant Purge™ per aggiornamenti rapidi dei contenuti e regole di caching personalizzabili. Il nostro approccio migliora l’esperienza utente con un accesso più rapido ai contenuti, riducendo al contempo i costi della larghezza di banda e il costo di uscita.