In ASP.NET esiste una cache in cui posso salvare dati temporanei?

Utente HTML.it
chiede

In ASP.NET esiste una cache in cui posso salvare dati temporanei?

Redazione HTML.it
risponde

Sì. ASP.NET mette a disposizione un oggetto, chiamato proprio Cache, in cui è possibile inserire i dati temporanei che sono utilizzati dalla propria applicazione web. Tale oggetto è condiviso da tutte le sessioni e tutte le richieste indirizzate al sito. Si tratta di una tabella hash chiave/valore, in cui la chiave è una stringa, mentre il valore è un qualsiasi object.

Il suo tipico utilizzo passa attraverso il metodo Insert, con cui si aggiunge un elemento alla cache specificandone il periodo di validità e l’eventuale metodo da richiamare quando sarà rimosso. Ad esempio, il seguente codice mostra come inserire in cache un elemento che sarà automaticamente rimosso 10 minuti dopo l’aggiunta (indipendentemente dal fatto che si acceda ad esso oppure no):

Persona p = //....
Cache.Insert("Chiave", p, null, DateTime.UtcNow.AddMinutes(10), System.Web.Caching.Cache.NoSlidingExpiration);

In questo esempio si usa DateTime.UctNow per evitare problemi con i fusi orari e l’ora legale. Con il prossimo listato, invece, possiamo aggiungere alla cache un oggetto che resterà valido per 5 minuti a partire dall’ultima richiesta:

Persona p = //....
Cache.Insert("Chiave", p, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, 5, 0));

Il recupero di un elemento dalla cache è altrettanto semplice:

if (Cache["Chiave"] != null)
{
    Persona p = (Persona)Cache["Chiave"];
}