2012-11-30 10 views
29

Se uso un ObjectCache e aggiungere un elemento in questo modo:.NET Caching come funziona Scoratura scorrevole?

ObjectCache cache = MemoryCache.Default; 
string o = "mydata"; 
cache.Add("mykey", o, DateTime.Now.AddDays(1)); 

Capisco l'oggetto scadrà in 1 giorno. Ma se l'oggetto si accede 1/2 il giorno dopo con:

object mystuff = cache["mykey"]; 

Questo resettare il timer in modo che sia ora 1 giorno dopo l'ultimo accesso della voce con il "MyKey" chiave, o ancora 1/2 al giorno fino alla scadenza?

Se la risposta è no e c'è un modo per farlo mi piacerebbe sapere.

Grazie.

risposta

62

Ci sono due tipi di criteri di cache che è possibile utilizzare:

CacheItemPolicy.AbsoluteExpiration scadranno, la voce dopo un certo lasso di tempo.

CacheItemPolicy.SlidingExpiration scadrà la voce se non è stata letta in un certo lasso di tempo.

L'overload di ObjectCache Add() che si sta utilizzando lo considera una scadenza assoluta, il che significa che scadrà dopo 1 giorno, indipendentemente dal numero di accessi. Dovrai utilizzare uno degli altri overloads. Ecco come quando si imposta una scadenza variabile (è un po 'più complicato):

CacheItem item = cache.GetCacheItem("item"); 

if (item == null) { 

    CacheItemPolicy policy = new CacheItemPolicy { 
     SlidingExpiration = TimeSpan.FromDays(1) 
    } 

    item = new CacheItem("item", someData); 

    cache.Set(item, policy); 
} 

si modifica il TimeSpan al tempo di cache appropriata che si desidera.

+2

Risponde perfettamente! Grazie Signore. – Kelly

-3

Il valore della proprietà SlidingExpiration viene impostato utilizzando l'attributo slidingExpiration dell'elemento di configurazione. Scadenza decrescente azzera il tempo di scadenza per un cookie di autenticazione valido se viene effettuata una richiesta e è trascorso più della metà dell'intervallo di timeout. Se il cookie scade, l'utente deve eseguire nuovamente l'autenticazione. L'impostazione della proprietà SlidingExpiration su false può migliorare la sicurezza di un'applicazione limitando il tempo per il quale un cookie di autenticazione è valido, in base al valore di timeout configurato. Raccomandiamo che se si configura requireSSL come falso, si configura anche slidingExpiration come falso, per ridurre il tempo per cui un ticket è valido.

+0

La domanda riguardava la memoria cache e non i cookie – nsimeonov