Wie funktioniert das Caching 'Priority' und 'AbsoluteExpiration'?

8

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"?

    
Independent 28.10.2011, 07:34
quelle

1 Antwort

6

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.

    
Fabian Nicollier 10.07.2012 07:41
quelle

Tags und Links