2011-11-21 38 views
0

我在我的網站上有很多代碼,看起來像這樣;的這個安全緩存 - ASP.net的刷新模式

Item item; 

if(Cache["foo"] != null) 
{ 
    item = (Item)Cache["foo"]; 
} 
else 
{ 
    item = database.getItemFromDatabase(); 
    Cache.insert(item, "foo", null, DateTime.Now.AddDays(1), ... 
} 

一個這樣的實例有一個相當昂貴getItemFromDatabase方法(這是它的高速緩存的主要原因)。我遇到的問題是,每次發佈或重新啓動應用程序時,緩存都會被清除,然後一大羣用戶會聯機並點擊上面的代碼,這會殺死我們的數據庫服務器。
處理這些場景的典型方法是什麼?

回答

2

您可以掛接到global.asax文件中的Application OnStart事件,並調用一個方法在應用程序啓動時在單獨的線程中加載昂貴的數據庫調用。

使用鎖定模式訪問這些屬性的專用類可能也是一個想法,以避免在初始值爲空時進行多個數據庫調用。

+0

謝謝你,你的意見讓我朝着正確的方向尋找,結束了。 http://stackoverflow.com/questions/39112/what-is-the-best-way-to-lock-cache-in-asp-net –