2012-06-04 80 views
1

編輯:這不是一個關於如何以編程方式設置到期的問題。我完全熟悉絕對,滑動和依賴關係到期。ASP.NET如何決定何時從緩存中刪除項目?

當一個項目存儲在ASP.NET緩存中時,ASP.NET是否有一些已知的算法用於確定該項目何時被刪除?

我並不是說它是否被無效(例如通過使用SqlCacheDependency通知),而是某些元素被加載並緩存,然後在幾小時或幾天甚至幾分鐘內未被觸及/讀取但在緩存內存不斷需求的服務器上......是否有一些關於IIS或ASP.NET如何決定什麼時候空閒數據應該被清除的信息?

我問,因爲我的老闆在想,也許我們可能會認爲IIS,並強制每晚預加載數據到緩存中,我們認爲將可能需要。我認爲這是一種徒勞無益的努力,可能會讓我們與應用程序的真實需求相抗衡 - 所以我正在尋找一些能夠驗證或反駁我思想的硬性材料。

TIA 摹

回答

2

緩存,必須經常清潔的時間,以確保有存放新項目的地方。當項目有效期過期或依賴關係發生變化時,緩存中的數據也可以被刪除。依賴關係可以是例如數據庫 - 然後當數據庫發生一些變化時,從該緩存中刪除依賴於該數據庫的項目。

有存儲在緩存中清除數據的兩種機制:

清除 - 當沒有緩存足夠的自由空間ASP.NET查找還沒有被最近使用的項目和低優先級的項目。然後它刪除選定的項目並將新項目存儲在緩存中。

過期 - 數據的有效時間已過,也將被刪除。過期時間可以是絕對的 - 當數據在特定時間段內有效時,當時間從上次使用開始計算時,它們也可以被稱爲「滑動」

+0

謝謝 - 那麼我在尋找什麼是關於清除的更具體的信息及其基礎算法,如果有的話。這給了我需要查找更多細節的搜索條件。 :) –

+1

請參閱http://msdn.microsoft.com/en-us/library/ee817651.aspx –

相關問題