2009-06-09 29 views
2

我目前正在開發中的ASP.NET Web表單網站..我失去了我所有的緩存....(以下物品從我的緩存disapearing)

我緩存東西的地方它使SENCE。 ..用高/中/低優先級加法東西.. 告訴他們留在緩存2周,1周4小時體面

即時顯示在每個頁面上緩存的項目的當前數量(用於調試原因)。

有時如果我通過網站快速瀏覽緩存中的項目數量可能會達到2000項......但如果我等5分鐘並刷新頁面緩存將降低到20項..緩存在該頁上)

有沒有什麼方法可以找到我們發生了什麼事?這是否有缺失的原因?

進出口運行Win7的,4GB內存,64位,VS10,.NET4,

我有4場音樂會公羊何必我的緩存完全是空的?

我會說10%的緩存項目是每個約4K,其餘的將是約100個字符長的字符串。

編輯:我使用的滑動過期

編輯:我整理出來,有跡象表明是非常大的一個或兩個項目,他們被設置爲高優先級..這和其他一些小的變化固定我問題。

回答

9

如果將應用程序池設置爲每xx分鐘回收一次,則告訴它停留在高速緩存中多長時間無關緊要。在大多數服務器上,應用程序池默認每1440分鐘(24小時)循環使用。除非持續保存數據,否則緩存無法在應用程序池回收期中繼續存在。

我不堅持那麼久(幾乎從來沒有真正實用)。我還設置了應用程序,如果緩存已被清除以重建自己,則需要數據 - 並非全部一次。

您還可以使用更多的內存比應用程序池被配置爲允許,過多的CPU等

如果這對開發人員的機器每次運行重置應用程序或重新加載Visual Studio的一切也被刪除。

看看你的應用程序池,你可能會看到重置的罪魁禍首。

0

您是否擁有絕對或滑動過期集?

+0

即時通訊使用滑動... – 2009-06-09 21:09:50

6

僅僅因爲系統有4GB內存並不意味着ASP.NET進程可以使用所有的空間,也不意味着ASP.NET緩存可以有效地使用所有的空間。據我瞭解和觀察這頭野獸,如果它覺得它太滿了,它就會開始清理自己,聽起來你正在緩存大量的數據。

跟蹤這個方法是使用緩存過期回調函數來記錄東西。它應該能夠讓你知道什麼會被拋棄,何時以及爲什麼。