При попытке установить другое свойство OutputCache в частичном представлении я обнаружил, что кеш PartialView использует продолжительность родительского кэша вывода. Со следующим кодом я надеюсь, что RenderPartial приведет к более короткой продолжительности OutputCache, но я обнаружил, что он такой же, как и в родительском представлении (10 секунд)
public class HomeController : Controller
{
[OutputCache(Duration=10, VaryByParam="none")]
public ActionResult Index()
{
ViewBag.Message = "Time now: "+ DateTime.Now.ToString();
return View();
}
[ChildActionOnly]
[OutputCache(Duration=5, VaryByParam="none")]
public PartialViewResult LogonPartial()
{
return PartialView("_LogOnPartial");
}
}
В этом простом примере, показывающем DateTime.Now в частичном представлении, я обнаружил, что PartialView не очищает свой кеш, пока родительское представление не сбрасывает его, где я надеюсь, что частичное представление очищает кеш каждые 5 секунд (а не каждые 10, как родительское представление делает). В примерах, которые я видел с использованием OutputCache в PartialView, кеш реализован в PartialView, а не в содержащем представлении. Кто-нибудь знает, является ли это ограничением кеширования в MVC3 или есть другой способ обрабатывать разные механизмы кеширования на одной странице? Заранее спасибо!