2012-05-31 53 views
2

我想在我的程序中實現緩存。我有一個Web應用程序,可以讓用戶訪問某些學習課程。當用戶登錄時,我會從我們的數據庫對他進行身份驗證。現在,如果從列表中訪問不同的課程,我不想回到數據庫。相反,我想將這個值存儲在緩存中讓我們說20分鐘。程序應該 1)驗證用戶,讓他訪問課程。如果他改變課程,程序應該在緩存中查找。如果用戶標識存在,則允許他訪問課程而無需返回服務器。 2)提供一種機制,如果用戶在20分鐘後仍在系統中,則自動更新時間。因此,用戶未被註銷。 我想是這樣的在C#中緩存(ASP.NET)

Cache ch = new Cache(); 
ch.Add("key","value); 

但我得到的第二個聲明無效refernece例外。我從來沒有使用緩存之前,所以將欣賞任何指針。

+0

可能重複的[ASP.Net緩存](http://stackoverflow.com/questions/1130762/asp-net-caching) –

回答

2

嗯,這是我如何使用它:

/// <summary> 
/// Get Data 
/// </summary> 
/// <returns>data</returns> 
public static ElementOut GetData() 
{ 
    //function return value 
    ElementOut functionReturnValue = new ElementOut(); 

    try 
    { 
     string key = "data"; 
     if (HttpRuntime.Cache[key] == null) 
     { 
      //fetch data 
      var data = CreateBLLAdapter().GetData(); 

      //validate data 
      if (data == null) throw new Exception("data is empty!"); 

      //set cache to 12 hours 
      DateTime timeToExpire = DateTime.Now.AddHours(12); 

      //set cache 
      HttpRuntime.Cache.Insert(key, data, null, timeToExpire, Cache.NoSlidingExpiration); 
     } 

     //set return from cache 
     functionReturnValue = (ElementOut)HttpRuntime.Cache[key]; 

    } 
    catch (Exception ex) 
    { 
     //Log.WriteServerErrorLog(ex); 
    } 

    return functionReturnValue; 
} 
0

如果您在學ASP.NET,你可以簡單地使用ASP.NET session store,它爲每個用戶存儲的值,只要他的會話持續(這是由默認20分鐘,距離他最後一次動作)

1

當前HTTP上下文的使用Cache

HttpContext.Current.Cache

描述:當一個新的HTTP請求來,在俗稱爲請求流程管道流水線請求,應用程序,也就是,在將請求發送給處理程序以處理它之前,它會先後對請求執行一些操作。

ASP.NET執行的操作之一是基於某些參數加載會話並緩存數據。

HttpContext.Current.Cache是加載緩存,您可以使用它。然後,當您在該緩存中存儲某些內容時,ASP.NET會再次負責存儲該緩存並將其保存在下一個HTTP請求中。

您還可以使用頁面的Cache屬性訪問該全局對象。