2017-09-14 117 views
0

一位朋友要求我使用Output Cache緩存數據,這很好,但問題是我想從數據庫獲取數據,然後與數據進行交互,我的意思是,我想要從數據庫中獲取大量數據,然後根據用戶活動動態獲取來自龐大數據的一些數據。在ASP.net中緩存數據MVC

[OutputCache(Duration =600, VaryByParam ="none")] 
public ActionResult GetData() 
{ 
var result = context.People.ToList(); 
return View(result); 
} 

這是一個例子,但讓我們說,我想用分頁在我看來這些數據,我想根據出生日期顯示每個人,例如默認頁面本週,有一個鏈接稱爲「下一個」,另一個稱爲「上一個」。點擊'下一步'鏈接時,我想只顯示下週的生日,與'上一次'相同的事情,只顯示前一週的生日。 但是使用輸出緩存我顯示的是相同的數據是否可以一直......只有在第一次與數據庫進行交互時,才能做到這一點,緩存該數據,然後與該數據進行交互,並在設置持續時間期間不再對數據庫進行讀取?你建議我使用與輸出緩存不同的另一個緩存工具嗎?

+1

閱讀關於'VaryByParam'屬性。 – hatchet

+1

如果你的分頁,那麼你將在方法中有一個參數,所以你緩存的時候該參數是相同的 –

回答

-1

而不是緩存整個視圖,也許你可以將結果添加到會話狀態?

public ActionResult GetData() 
{ 
    if (HttpContext.Current.Session["peopleList"] != null) 
    { 
     return View((List<People>)HttpContext.Current.Session["peopleList"]); 
    } 
    else 
    { 
     var result = context.People.ToList(); 
     HttpContext.Current.Session["peopleList"] = result; 
     return View(result); 
    } 
} 

您可以控制會話多久狀態在你的web.config或通過IIS持續。