2012-04-30 7 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를 필터를 사용하기보다는

 [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/en-us/library/system.web.mvc.outputcacheattribute.varybyparam.aspx) 속성이 – Rup

+0

으로 지정되어 있습니다. @Rup이 머리에 못을 박았습니다. . VaryByParam을 사용하여 특정, 전체 또는 매개 변수를 사용하여 캐시 할 수 있습니다. 필자는 zipcode, pagesize 및 currentPage (즉, 모든 매개 변수)를 사용하여 캐시 할 항목을 결정하고 (캐시에서 가져 오기) –

관련 문제