【问题标题】:MVC 3 child actions not cached with OutputCache attribute未使用 OutputCache 属性缓存的 MVC 3 子操作
【发布时间】:2012-05-01 03:07:26
【问题描述】:

我的子操作没有被缓存。我不知道为什么。

我的母版页调用子操作:

@Html.Action("Header", "Layout", new { selectedMarket = Model.SelectedMarket })

    [ChildActionOnly]
    [OutputCache(Duration=60)]
    public PartialViewResult Header(Guid selectedMarket)
    {
        var model = _marketService.GetHeaderViewModel(selectedMarket);
        return PartialView(model);
    }

执行此子操作,并在每个请求上重新渲染部分操作。

注意:我可以使用 OutputCache 成功缓存整个页面。只是甜甜圈洞缓存对我不起作用。

【问题讨论】:

  • 你是如何渲染子动作的?

标签: asp.net-mvc-3 outputcache


【解决方案1】:

尝试按以下方式设置 OutputCacheAttribute:

[OutputCache(Duration=3660, VaryByParam="selectedMarket")]

这将为每个 selectedMarket 创建一个单独的缓存(我想这就是您所需要的)。让我知道这是否有帮助。

【讨论】:

  • 最终,是的。我试图先让简单的案例工作,然后再增加复杂性。我按照您的建议添加了 VaryByParam,但我的子操作和视图仍会针​​对每个请求执行。
  • 显然,它会根据路由值自动变化。在我的测试中, selectedMarket guid 是为每个请求随机选择的。当我开始使用一致的真实市场指南时,它按预期工作。
猜你喜欢
  • 2011-11-18
  • 2013-09-01
  • 2017-03-13
  • 2013-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-10
  • 2012-04-18
相关资源
最近更新 更多