gpt4 book ai didi

asp.net-mvc-3 - MVC3 部分 View OutputCache 被父 View 覆盖

转载 作者:行者123 更新时间:2023-12-02 14:51:12 25 4
gpt4 key购买 nike

当尝试在部分 View 上设置不同的 OutputCache 属性时,我发现 PartialView 缓存正在使用父级输出缓存持续时间。使用以下代码,我希望 RenderPartial 能够缩短 OutputCache 持续时间,但我发现它与父 View 相同(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");
}
}

通过这个在部分 View 中显示 DateTime.Now 的简单示例,我发现 PartialView 不会清除其缓存,直到父 View 刷新其缓存,我希望部分 View 每 5 秒清除一次缓存(不是每 10 秒一次)父 View 确实如此)。在我看到的在 PartialView 上使用 OutputCache 的示例中,缓存是在 PartialView 而不是包含 View 上实现的。有谁知道这是否是 MVC3 中缓存的限制,或者是否有另一种方法可以处理同一页面上的不同缓存机制?提前致谢!

最佳答案

您已将整个父 View 缓存了 10 秒。这意味着在这 10 秒内,子操作永远不会被命中,并且整个 View 将从缓存中提供。即使子action的缓存在5秒后过期,它仍然不会被命中。

在 ASP.NET MVC 3 中,仅支持圆环孔缓存(通过在子操作上使用 OutputCache 属性来缓存页面的一部分)。不支持 donut 缓存(从此缓存中排除缓存页面的部分内容)。

关于asp.net-mvc-3 - MVC3 部分 View OutputCache 被父 View 覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8037892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com