2011-12-15 3 views
0

MCV3 OutputCache를 사용하여 데이터가 가득 찬 테이블이있는 페이지의로드 시간을 줄입니다. 저는 아약스 메소드를 사용하여 정보를 업데이트하고 DOM을 조작하여 사용자에게 변경 사항이 성공적임을 보여줍니다. 페이지를로드하고 캐시 된 데이터 집합을 업데이트 할 때까지로드됩니다.C# MVC3 프로젝트에서 OutputCache 사용

업데이트 메서드를 호출 할 때 캐시를 지우거나 제거하여 페이지 새로 고침시 새롭게 업데이트 된 데이터로 다시 작성하려고합니다. 다음과 같이

내 코드는 다음과 같습니다

[OutputCache(CacheProfile = "VideoIndexView")] 
public ActionResult Index() 
{ 
    ... 
    return View(model); 
} 

답변

0

당신은 화면의 템플릿을로드하고 실제 데이터를 얻을로드 AJAX를 사용하도록 Index 조치 결과를 사용할 수 있습니다.

[OutputCache(CacheProfile = "VideoIndexView")] 
public ActionResult Index() 
{ 
    ... 
    return View(model); // Really only return a model that is okay to be cached 
} 

public ActionResult LoadData() 
{ 
    var Result = // Load the data 
    ... 
    return Json(Result); // Don't forget to allow GET here if you're using HTTPGET 
} 

// Or... 

public ActionResult LoadData() 
{ 
    var Result = // Load the data 
    ... 
    return PartialView (Result); 
} 

이 방법

, Index이 잘 캐시 할 수와 페이지가 사용자에게 제공 한 후 데이터가 페이지에로드 주입됩니다. jQuery와 같은 것을 사용하려는 경우 GET을 사용하는 경우 캐시 된 결과를 사용하지 않도록 지시해야합니다.

+0

불행히도 TOP 또는 LIMIT 명령을 지원하지 않는 MS Access DB를 사용해야합니다. 즉, 작업 할 상당히 큰 데이터 세트가 있고 실제로 페이지 또는 다른 부분 뷰와 대조적으로 캐시하려는 행입니다. – joepour

+0

네,하지만 결과를'LoadData' 메쏘드에 캐싱 할 수 있고 클라이언트 쪽이 준비되면 청크를 보낼 수 있습니다. –

1

캐시에서 일부 URL을 지우려면 RemoveOutputCacheItem 정적 메서드를 호출 할 수 있습니다.

+0

'RemoveOutputCacheItem'은 인수가'CacheProfile'의 이름 일 때 작동합니까? – escist