2012-04-30 6 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

を自分で自分の行動にoutputcacheフィルタを使用してではなく、手動でそれをやって示唆はい、私はそれについて考えたが、それは変化するパラメータの値を基準に従ってデータを格納するのだろうか?郵便番号は変わることはないので? – BreakHead

+1

異なる入力郵便番号で異なる結果がキャッシュされるのですか?はい、それは[VaryByParam'](http://msdn.microsoft.com/en-us/library/system.web.mvc.outputcacheattribute.varybyparam.aspx)プロパティが – Rup

+0

の@Rupが頭に釘を打つことを指定するものです。 VaryByParamを使用して、特定のパラメータ、すべてまたはパラメータを使用してキャッシュすることができます。私の例では、zipcode、pagesize、およびcurrentPage(つまりすべてのパラメータ)を使用して、キャッシュするものを決定し(キャッシュから引き出す) –

関連する問題