2012-04-30 33 views
3

我在我的MVC控制器中有一個動作,我想根據傳遞的參數作爲關鍵字緩存它的返回結果,這樣下一次該動作將被調用時它將首先如果找不到,它將查找數據存儲。將數據存儲在高速緩存中30分鐘MVC

public ActionResult GetSearchResult(string zipcode, int pageSize, int currentPage) 
{ 
    Cache[zipcode + page + currentpage] = somedata // but it should be cleared after 30 min 
} 

我該怎麼做?我可以像上面那樣將數據存儲在緩存對象中,但是我想確保緩存的對象在30分鐘後被清除。我看不到如何在全局或每個緩存對象的基礎上配置生存期。

回答

2

我強烈建議使用你的行動的輸出緩存過濾器,而不是做手工自己

 [OutputCache(Duration=1800, VaryByParam="*")] 
    public ActionResult GetSearchResult(string zipcode, int pageSize, int currentPage) 
    { 
    //  Cache[zipcode + page + currentpage] = somedata // but it should be cleared after 30 min 
    } 
+0

是的,我想過這個問題,但將它存儲的數據按照不斷變化的參數值的基礎?因爲郵編會不斷變化? – BreakHead

+1

你的意思是它會緩存不同的輸入郵政編碼的結果?是的,這就是['VaryByParam'](http://msdn.microsoft.com/zh-cn/library/system.web.mvc.outputcacheattribute.varybyparam.aspx)屬性指定的 – Rup

+0

@Rup擊中了頭部。您可以使用VaryByParam使用特定的全部參數或無參數進行緩存。在我的例子中,我說的是應該使用zipcode,pagesize和currentPage(即所有參數)來確定要緩存什麼(並從緩存中提取) –