2012-07-27 3 views
2

내 시나리오는 다음과 같습니다.클라이언트에서 MVC 부분 뷰 캐싱/조회를위한 패턴

컨트롤러 방법 :

$.get('/Home/UserProfile', function (data) { $('.content').html(data); }); 

싶습니다로 :보기를 얻을

public ActionResult UserProfile() { return View("UserProfile"); } 

Ajax 요청 나는 부분 뷰를 반환하는 컨트롤러 메소드를 가리키는 URL을 호출하고있어 내 "UserProfile"보기를 캐시하여 사용자가 클릭 할 때마다 다시 컨트롤러에서보기를 가져 오기 위해 서버로 돌아갈 필요가 없습니다.

서버에서 가져 오기 전에 뷰가 클라이언트에 캐시되어 있는지 확인할 수 있고, 캐시에서 뷰를 가져와 내 레이아웃의 div에 삽입하면됩니다.

누구나 이와 같은 작업을 했습니까?

+0

이런 식으로 구현하면 로그 아웃 (또는 시간 초과 등)시 캐시 지우기를 잊지 마세요. – Manatherin

답변

1

[OutputCache] 속성을 사용할 수 있습니다. 뷰를 캐시 할 기간과 캐시 위치를 지정할 수 있습니다. 예를 들어 이제 클라이언트 브라우저에 30 초 동안 컨트롤러 액션의 결과를 캐시하고 싶다고 가정하자 :

이제
[OutputCache(Duration = 30, Location = OutputCacheLocation.Client)] 
public ActionResult UserProfile() 
{ 
    return PartialView(); 
} 

당신이 많은 AJAX 요청을 트리거 할 수 있지만 하나에 30 초 서버로 전송됩니다 :

window.setInterval(function() { 
    $.get('/Home/UserProfile', function (data) { 
     $('.content').html(data); 
    }); 
}, 4000);