Mi sono trovato in un CacheItem
che non è stato pulito correttamente. Mentre guardando MSDN e mi correggere in mediante il calcolo Utc-based, ho trovato queste informazioni confuse:In che modo la cache "Priorità" e "AbsoluteExpiration" funzionano insieme?
AbsolutExpiration
viene utilizzato per impostare un "keep-alive" di un CacheItem
, Priority.NotRemovable
viene utilizzato per forzare CacheItem
per esistere per sempre. Nessuna notifica su quale proprietà sostituisce l'altra.
Il codice seguente compila e SQL Profiler conferma anche che il database viene interrogato solo una volta, mentre ogni altra richiesta proviene dalla cache.
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
presumo che questa forza di codice le voci della cache di rimanere per sempre, ma vengono cancellati dopo 12 ore dalla creazione, in linea con la nota del MSDN sull'impostazione.
"implementazioni cache deve impostare la priorità NotRemovable per una voce di cache solo se l'attuazione della cache fornisce modi per sfrattare voci dalla cache e per gestire il numero di voci di cache"
Poi il dall'altra parte, perché entrambe le proprietà dovrebbero funzionare insieme? L'implementazione porta una sorta di "più non rimovibile"?
Mi stavo chiedendo anch'io grazie alla documentazione poco chiara. Nel mio caso vorrei che la voce della cache non venisse rimossa a meno che non scada per evitare che la cache effettui la pulizia sotto carico pesante prima della scadenza che ha colpito. –