.NET 4 ObjectCache - Können Wir Haken In einen "Cache Expired" - Ereignis?
Habe ich ein einfaches Objekt zwischengespeichert werden wie diese:
_myCache.Add(someKey, someObj, policy);
Wo _myCache
erklärt wird ObjectCache
(aber injiziert via DI als MemoryCache.Default
), someObj
ist das Objekt, ich bin das hinzufügen, und policy
ist ein CacheItemPolicy
.
Wenn ich eine CacheItemPolicy
wie diese:
var policy = new CacheItemPolicy
{
Priority = CacheItemPriority.Default,
SlidingExpiration = TimeSpan.FromHours(1)
};
Es heißt, es verfällt in 1 Stunde. Cool.
Aber was passieren wird ist, dass unglückliche erste Benutzer nach der Stunde warten müssen für die Treffer.
Gibt es eine Möglichkeit, ich kann den Haken in eine "abgelaufen" - event/delegate und manuell den cache aktualisieren?
Ich sehe, es gibt eine Erwähnung von CacheEntryChangeMonitor
aber finde keine meaninful doco/Beispiele auf, wie es zu nutzen in meinem Beispiel.
PS. Ich weiß, dass ich verwenden können CacheItemPriority.NotRemovable
- und ablaufen, es manuell, aber das kann ich nicht in mein Aktuelles Beispiel, weil der Cache-Daten ist ein bisschen zu kompliziert (e.g ich brauchen würde, zu "entkräften", wie in 10 verschiedenen stellen in meinem code).
Irgendwelche Ideen?
- btw, keine Notwendigkeit, Priorität = CacheItemPriority.Standard, da dieser Standard-Wert ist standardmäßig eingestellt 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine Eigenschaft, auf die
CacheItemPolicy
genanntRemovedCallback
vom Typ:CacheEntryRemovedCallback
. Nicht sicher, warum Sie nicht gehen, das standard-event-route, aber das sollte tun, was Sie brauchen.http://msdn.microsoft.com/en-us/library/system.runtime.caching.cacheitempolicy.removedcallback.aspx
Spät, um die Partei mit diesem, aber ich habe gerade bemerkt interessante Unterschiede zwischen den CacheItemUpdate und CacheItemRemove Rückrufe.
http://msdn.microsoft.com/en-us/library/system.web.caching.cacheitemupdatereason.aspx
Insbesondere dieser Kommentar:
System.Web.Caching
namespace, während die Frage über dieSystem.Runtime.Caching
namespace.System.Web.Caching
im .NET 4 und.Dies ist mein Weg, um
CacheRemovedCallback
- Ereignis, wenn der cache abgelaufen ist.Ich teilen, für die Sorge.