뷰 결과 개체를 직접 캐싱하여 MVC 4에서 OutputCache 작업 필터의 기능을 대부분 다시 만들려고합니다. OutputCache 액션 필터를 사용하고 싶지 않은 이유는 AppFabric 및 부분 뷰와 함께 사용할 수 없기 때문입니다. 부분 뷰는 항상 MemoryCache에 저장되며 캐시 된 개체를 서버 팜에서 사용하기를 원합니다.AppFabric에서 MVC 뷰를 수동으로 캐싱
내가 가진 첫 번째 문제는이 나는 기본적으로 마지막에보기 무엇을 반환하는 다른 뭔가를 캐시할지 궁금한데
{"Type 'System.Web.Mvc.TempDataDictionary' cannot be serialized.
Consider marking it with the DataContractAttribute attribute, and marking all of
its members you want serialized with the DataMemberAttribute attribute.
If the type is a collection, consider marking it with the
CollectionDataContractAttribute. See the Microsoft .NET Framework documentation for
other supported types."}
이다. 누구나 서버 팜을 통해 부분 뷰를 캐시하기 위해 뷰를 다시 작성하거나 다른 접근 방식을 다시 작성하기 위해 캐시해야 할 사항이 있습니까? 나는 이것을 위해 써드 파티 플러그인을 사용하고 싶지 않다.
감사
업데이트 : 이것은했다
using (StringWriter sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, "ViewName");
ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
view = sw.GetStringBuilder().ToString();
}
쉽게 단지 캐시에있는 문자열을 검색하고 콘텐츠로 반환 : 그래서 같은 부분보기의 문자열 표현을 캐시 시작 동작. 나는 아직도 이것을하기위한 다른 제안이나 더 좋은 방법을 찾고있다.