Ich habe mich in eine CacheItem
gefunden, die nicht richtig aufgeräumt hat. Während ich mich MSDN ansah und mich selbst korrigierte, um eine auf Utc basierende Berechnung zu verwenden, fand ich diese verwirrende Information:
AbsolutExpiration
wird verwendet, um "keep-alive" von CacheItem
zu setzen, Priority.NotRemovable
wird verwendet, um CacheItem
für immer zu definieren. Keine Benachrichtigung darüber, welche Eigenschaft die andere überschreibt.
Der folgende Code kompiliert und SQL Profiler bestätigt auch, dass die Datenbank nur einmal abgefragt wird, während jede andere Anfrage aus dem Cache stammt.
%Vor%Ich nehme an, dass dieser Code die Cache-Elemente zwingt, für immer zu bleiben, aber nach 12 Stunden ab Erstellung gelöscht wird, in Übereinstimmung mit der MSDN-Notiz über die Einstellung.
"Cache-Implementierungen sollten die NotRemovable-Priorität für a festlegen Cache-Eintrag nur dann, wenn die Cache-Implementierung Möglichkeiten zur Räumung bietet Einträge aus dem Cache und um die Anzahl der Cache-Einträge zu verwalten "
Dann die andere Seite, warum würden beide Eigenschaften überhaupt zusammenarbeiten? Bietet die Implementierung eine Art "mehr nicht entfernbaren"?
Also das "NotRemovable" verhindert den Cache-Eintrag automatisch entfernt wird (z. B. wenn der Speicherplatz des Caches knapp wird), wird aber entfernt, wenn es abläuft oder Sie es manuell aus dem Cache entfernen.
NotRemovable Die Cache-Elemente mit dieser Prioritätsstufe werden nicht automatisch aus dem Cache gelöscht, wenn der Server den Systemspeicher freigibt. Elemente mit dieser Prioritätsstufe werden jedoch zusammen mit anderen Elementen entsprechend der absoluten oder gleitenden Ablaufzeit des Elements entfernt.