我發現自己進入了一個沒有正確清理的CacheItem
。雖然看MSDN和我糾正成使用基於UTC的計算,我發現這混亂的信息:緩存「優先級」和「絕對優先」如何協同工作?
AbsolutExpiration
用於設置的一個「保活」 CacheItem
,Priority.NotRemovable
用於強制CacheItem
永久存在。沒有關於什麼屬性覆蓋另一個的通知。
下面的代碼會進行編譯,並且SQL事件探查器也會確認只查詢一次數據庫,而其他每個請求都來自緩存。
CacheItemPolicy _cachePolicy = new CacheItemPolicy()
{
AbsoluteExpiration = new DateTimeOffset(DateTime.Now.AddHours(6)),
Priority = CacheItemPriority.NotRemovable
};
我假設這段代碼強制緩存項目永久保留,但在創建12小時後清除,符合MSDN關於設置的註釋。
「緩存實現應設置NotRemovable優先級僅在緩存實現提供了一些方法來從緩存中驅逐 條目和管理緩存條目的數量 緩存條目」
然後另一方面,爲什麼兩種房產都可以一起工作?實施是否帶來某種「更不可移動」?
由於不清楚的文檔,我自己在想這個。在我的情況下,我希望緩存的條目不會被刪除,除非它到期,以防止緩存在其到達之前在重負載下進行清理。 –