При попытке установить другое свойство 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 или есть другой способ обработки различных механизмов кэширования на одной странице? Заранее спасибо!