Caching CDN

Il Caching è il cuore dei servizi di content delivery network (CDN). Similmente a come la memorizzazione nella cache del browser memorizza i file su un disco rigido, dove possono essere accessibili più rapidamente, una CDN sposta il contenuto del tuo sito Web su potenti server proxy ottimizzati per una distribuzione accelerata dei contenuti.

La memorizzazione nella cache funziona memorizzando selettivamente i file del sito Web sui server proxy della cache di una CDN, dove possono essere rapidamente accessibili dai visitatori del sito Web che navigano da una posizione vicina.

File statici

La maggior parte di tutti i contenuti del sito Web è costituita da file statici preformattati che non dovrebbero cambiare nel tempo (o per utenti diversi). Questi file sono i candidati predefiniti per la memorizzazione nella cache, al contrario dei file dinamici, che vengono generati al volo in base alle informazioni di un database.

Ad esempio: modello di e-store statico con informazioni sui prodotti generate dinamicamente. I file statici tipici sono:

Immagini modello

  • Video
  • Musica
  • JavaScript
  • File CSS

Cosa può fare per te la memorizzazione nella cache CDN?

1. Riduce i costi di larghezza di banda

La distribuzione di contenuti da proxy cache CDN rimuove il carico dal server di origine (backend), riducendo significativamente i costi di larghezza di banda associati alla distribuzione di contenuti a numerosi visitatori. Per la maggior parte dei siti, i costi di larghezza di banda possono essere ridotti fino al 40% – 80%, a seconda della percentuale di contenuti memorizzabili nella cache.

2. Migliora l’esperienza utente

Una rete distribuita a livello globale di server proxy cache, i CDN avvicinano i contenuti del tuo sito Web a tutti i visitatori, indipendentemente da dove si trovino. Far sì che questi contenuti vengano distribuiti da un server locale migliora significativamente la velocità di accesso e l’esperienza utente.

3. Garantisce una distribuzione affidabile dei contenuti

Le moderne CDN hanno una capacità di traffico che supera di gran lunga le normali capacità delle reti aziendali. Laddove un sito Web self-hosted può essere facilmente interrotto da picchi di traffico imprevisti o attacchi di negazione del servizio, i server cache CDN sono altamente resilienti e sicuri. Di conseguenza, sono stabili durante i picchi di traffico.

Come funzionano i server cache

I server cache proxy sono i componenti fondamentali dei data center di rete di un CDN, che sono strategicamente situati in tutto il mondo. Questi punti di presenza (PoP) vengono selezionati in base ai modelli di traffico delle singole regioni.

Le posizioni altamente attive con numerosi utenti possono avere diversi data center. D’altro canto, le posizioni remote con pochi utenti possono avere un solo PoP per coprire un’ampia regione geografica.

Una volta in posizione, i server cache fungono da repository per i contenuti del sito Web, fornendo agli utenti locali un accesso accelerato ai file memorizzati nella cache. Più un server cache è vicino all’utente finale, più breve è il tempo di connessione necessario per la trasmissione dei dati del sito Web.

Dal punto di vista hardware, un tipico server cache individuale è una potenza di distribuzione dei contenuti, con risorse di archiviazione RAM e SSD potenziate. Essendo l’opzione più veloce, la RAM viene utilizzata per le risorse ad alta priorità, mentre l’SSD viene utilizzato per i file Web meno richiesti, ma comunque memorizzabili nella cache.

Algoritmi di memorizzazione nella cache

Una memorizzazione nella cache efficiente si basa su un elevato tasso di hit, che indica che le risorse richieste sono presenti nella cache. Di conseguenza, la formula generale per calcolare il tempo medio di riferimento della memoria è:

Tempo medio di riferimento della memoria (T) =

Per garantire un elevato hit ratio vengono utilizzati diversi algoritmi, tra cui:

  • Algoritmo di Bélády
    Scarta sempre le informazioni che non saranno necessarie per il periodo di tempo più lungo in futuro. Questo approccio troppo bello per essere vero è possibile solo quando si può prevedere quanto tempo in futuro saranno necessarie le informazioni. Di conseguenza, questo algoritmo è raramente utilizzato nella pratica.
  • Least Recently Used (LRU)
    Scarta prima gli elementi meno utilizzati di recente. Questo algoritmo è implementato assegnando un contatore di età a ciascuna risorsa memorizzata nella cache e scartando quelle con contatori bassi. In genere questo è il metodo più efficace di gestione della cache.
  • Most Recently Used (MRU)
    A differenza di LRU, questo scarta prima gli elementi utilizzati più di recente. Questo algoritmo è più utile in situazioni in cui più un elemento è vecchio, più è probabile che venga utilizzato.

Intestazioni cache spiegate

Gli sviluppatori Web utilizzano le intestazioni cache HTTP per contrassegnare i contenuti Web memorizzabili nella cache e impostare le durate della cache. Utilizzando le intestazioni cache, puoi controllare la tua strategia di memorizzazione nella cache stabilendo policy di cache ottimali che garantiscano la freschezza dei tuoi contenuti.

Ad esempio: “Cache-Control: max-age=3600” significa che il file può essere memorizzato nella cache per non più di un’ora prima di dover essere recuperato dal contenuto di origine.

cache control tempo rilevato

Etichettare meticolosamente ogni file, o anche gruppi di file, può essere opprimente e soggetto a inefficienze. Le moderne CDN consentono di rinunciare a questa pratica impiegando meccanismi intelligenti in grado di ignorare le direttive dell’intestazione della cache quando si scopre che non sono ottimali.

Più comunemente, questi meccanismi consentono la memorizzazione nella cache di contenuti dinamici contrassegnati come non memorizzabili nella cache per impostazione predefinita, anche quando la freschezza non è un problema.

Scopri le intestazioni

  • Cache Control

    Introdotte con HTTP/1.1, le intestazioni gestiscono una varietà di funzioni di cache. Cache Control è supportato da tutti i browser moderni e sostituisce tutte le intestazioni di generazione precedente (come Expires).Cache-Control: public: consente la memorizzazione nella cache da parte di piattaforme pubbliche come le CDN.

    Cache-Control: private: riservato alle informazioni private designate come non memorizzabili nella cache.
    Cache-Control: no-cache: richiede la convalida prima della memorizzazione nella cache.
    Cache-Control: no-store: proibisce completamente la memorizzazione nella cache.
    Cache-Control: public, max-age=[seconds] – imposta un limite massimo (in secondi) per il tempo in cui il contenuto può essere memorizzato nella cache prima di essere eliminato.

  • Expires

    Simile a Cache-Control: max-age, imposta il tempo di scadenza e rimozione del contenuto.

  • Surrogate

    Offre un maggiore controllo sulle policy della cache, agendo con l’autorità del server di origine.

  • Etag

    Fornisce al contenuto Web memorizzato nella cache identificatori univoci, consentendo l’etichettatura individuale e un ordinamento più sofisticato.

  • Pragma

    Largamente soppiantato da Cache Control, Pragma era precedentemente utilizzato per gestire le istruzioni di memorizzazione nella cache per i browser.

  • Vary (utilizzare con cautela)

    Alcuni browser hanno ancora difficoltà a supportare l’intestazione Vary. Se utilizzato correttamente, Vary può essere uno strumento potente per gestire la distribuzione di più versioni di file, in particolare per i file compressi memorizzati nella cache insieme alle loro controparti non compresse.

Controllo cache intelligente

Finora, la maggior parte della memorizzazione nella cache CDN è stata un processo pratico. Tuttavia, le CDN moderne stanno sviluppando nuovi processi per monitorare, categorizzare e memorizzare nella cache una gamma più ampia di contenuti, risparmiando tempo e consentendo una maggiore efficienza complessiva.

Questo approccio basato sull’apprendimento si basa sulla capacità di una CDN di tracciare i modelli di utilizzo dei contenuti per ottimizzare automaticamente l’archiviazione e la distribuzione. I vantaggi dell’utilizzo di tali controlli cache intelligenti includono:

  • Regolazione della cache per contenuti popolari a livello regionale
  • Regole di cache automatizzate per materiale a cui si accede di frequente
  • Replica proattiva per contenuti ad alta richiesta
  • Criteri di archiviazione e scadenza sensibili al tempo

Uno dei principali vantaggi dei controlli cache intelligenti è la capacità di identificare nuove opportunità di cache per oggetti generati dinamicamente. Questi contenuti, che vengono generati di nuovo a ogni visita, potrebbero non essere soggetti a modifiche, ma sono comunque considerati “dinamici” a causa di un cavillo.

Cache predittiva tramite apprendimento

Gli algoritmi di cache intelligenti possono identificare automaticamente i contenuti dinamici semplicemente osservando i modelli di utilizzo. Ad esempio, quando un sistema nota che la stessa versione HTML della tua pagina prodotto viene servita più e più volte, la etichetta come statica, anche se è generata dinamicamente.

Da quel momento, l’oggetto HTML è considerato “memorizzabile nella cache” e viene servito direttamente dai server proxy di una CDN per migliorare la velocità di caricamento e la reattività della pagina. Gli algoritmi, d’altro canto, tengono traccia dell’oggetto e ne rivalutano costantemente lo stato, contrassegnandolo come dinamico non appena vedono che è stato modificato.

Fare ciò su larga scala può migliorare notevolmente le prestazioni del sito Web, senza alcun impatto sulla freschezza dei contenuti.

Opzioni di cache indispensabili

Anche con i recenti progressi nella memorizzazione nella cache intelligente, il controllo è ancora un requisito per una gestione ottimale della cache. Queste sono le tre opzioni di controllo della cache indispensabili:

1. Purge cache

Ti dà la possibilità di aggiornare i file memorizzati nella cache su chiamata. Nota che alcuni provider ti permetteranno di aggiornare solo l’intero storage della cache. Inoltre, in alcuni casi il tuo provider CDN limiterà il numero di purge in un dato periodo di tempo. L’efficacia di una richiesta di purge si misura nel tempo che impiega per propagarsi nell’intera rete.

2. Always/Never cache

Ti aiuta a sovrascrivere manualmente le intestazioni della cache, contrassegnando i file che dovrebbero essere sempre serviti o mai serviti dalla cache. Questo è uno strumento efficace per la gestione della cache, specialmente se combinato con opzioni di gestione in blocco che ti consentono di applicare queste direttive a interi gruppi di file (ad esempio, tutti i file JPG nella cartella /template/images/).

3. Cache per periodo

Un perfezionamento dell’opzione Always cache, che ti consente di impostare un periodo specifico durante il quale l’oggetto dovrebbe essere servito dalla cache prima di essere aggiornato. Accessibile dalla GUI CDN, questo consente una gestione più semplice di file specifici. Tuttavia, questa opzione è più utile quando viene utilizzata per la gestione di file in blocco (ad esempio, tutti i file JS memorizzati nella cache per cinque giorni).