当尝试在局部视图上设置不同的 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 不会清除它的缓存,直到父视图刷新他的位置,我希望 Partial 视图每 5 秒清除一次缓存(而不是每 10 秒作为父视图)做)。在我看到的在 PartialView 上使用 OutputCache 的示例中,缓存是在 PartialView 而不是包含视图上实现的。有谁知道这是否是 MVC3 中缓存的限制,或者是否有另一种方法可以在同一页面上处理不同的缓存机制?提前致谢!