2011-03-04 4 views
7

여러 페이지에 걸쳐 RenderPartial을 캐시 할 수 있다면 누구에게 말해 줄 수 있습니까? 사용자 프로필을 업데이트하지 않는 한 변경하지 않아야하는 사용자 프로필에 대한 RenderPartial이 있습니다. 그래서 나는 정말로 돌아가서 페이지를로드 할 때마다 그/그녀의 프로파일을 얻고 싶지 않습니다. (예 : 프로필 업데이트)여러 페이지에 걸쳐 MVC3 RenderPartial 캐싱

DonutHole p.haack을 함께 사용하는 예제를 보았지만 단일 페이지와 관련있는 것으로 보입니다. 누군가 올바른 방향으로 나를 가르키거나 조언을 해줄 수 있습니까? 아니면 한 번에 한 페이지 만 캐시 할 수 있습니까? 감사!

답변

11

대신 RenderAction을 사용할 수 있습니다. 예 :

<div> 
    @{Html.RenderAction("Cached");} 
</div> 

그것은 당신이 두 페이지에서의 캐시 된 버전을 얻을 것이다 :

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult About() 
    { 
     return View(); 
    } 

    [OutputCache(Duration = 6000, VaryByParam = "none")] 
    public ActionResult Cached() 
    { 
     // You could return whatever you want here, even a view 
     // but for the purpose of the demonstration I am simply 
     // returning a dynamic string value 
     return Content(DateTime.Now.ToLongTimeString(), "text/html"); 
    } 
} 

하고 아이의 행동을 포함 할 수있는 Index.cshtmlAbout.cshtml 뷰 내부

.

+0

감사합니다. 그것은 완벽했습니다. return 대신 PartialView (객체)를 반환했습니다. 메모에 적어 두었습니다. –

+0

Darin, OutputCache가 부분보기와 함께 사용될 때 캐시 프로필을 사용하도록하는 방법을 알고 있습니까? –

+1

@Mark 좋습니다. 아니요, 지원되지 않습니다. 문제를 설명하는 다음 기사를 살펴보십시오. http://www.dotnetcurry.com/ShowArticle.aspx?ID=665. 사용자 지정 작업 필터를 작성하여 수정할 수 있습니다. –

관련 문제