2009-07-17 61 views
0

我有這個通用列表正在被緩存在內存中。如何在測試期間手動從緩存中釋放該對象?我清除了瀏覽器上的緩存,但仍然在刷新時得到相同的一組產品,因爲它正在檢查我的數據庫檢索方法中的緩存對象。如何從內存釋放對象

回答

0

coffeeaddict你需要實現以緩存過期,並取消對您的應用程序使用更新的數據。如果您使用自己的緩存實現,請確保在每次更新持久緩存數據時都使緩存的數據無效,因此下次請求緩存數據時,它將按照完整路徑並將其緩存到內存中。

2

嘗試Cache.Remove()方法來從ASP.NET緩存中刪除的對象:

Cache.Remove("CacheKey"); 

因爲緩存條目保存在服務器的內存中,可以通過清除瀏覽器緩存尚不清楚應用程序緩存。

3

您正在將瀏覽器的緩存(在客戶端計算機上)與服務器端緩存混淆。

0

您的數據庫檢索方法在服務器上運行,與瀏覽器緩存無關(這就是爲什麼清除瀏覽器緩存不會執行任何操作)。

你的問題不太清楚,但我假設你正在使用ASP.Net緩存對象進行緩存。

您需要在數據庫檢索方法中添加一些代碼以刷新ASP.net緩存中的項目。這將有助於如果你能張貼你的代碼,但基本上它看起來像:

var data = DatabaseFetchStuff.... 
Cache["databaseInfoKey"] = data; 
+0

所以我有一個BL方法。它首先檢查我們爲記錄列表填充的通用列表。如果該緩存對象爲空,則它繼續調用我們的數據庫層方法從數據庫中檢索列表。對我來說問題是,如果已經填充了緩存列表,它永遠不會調用我的DB方法。我希望它調用我的數據庫方法,因爲我更改了它背後的底層參數化SQL,我想測試結果。我可以註釋掉hte緩存對象的檢查,並強制它調用我的DB方法來確保獲取記錄,但只是好奇另一種方式來做到這一點。 – PositiveGuy 2009-07-17 21:34:14