4

我正在使用 OutputCache 在我的应用程序中缓存水平菜单和垂直菜单。我通常在要缓存的操作中使用类似的东西

    [OutputCache(Duration=3600, VaryByParam="none", Location=OutputCacheLocation.Client, NoStore=true)]
    public ActionResult ActionName()
    {
        .......
    }

但如果它是一个子动作,我必须使用

    [ChildActionOnly]
    [OutputCache(Duration = 180, VaryByParam = "none")]
    public ActionResult Menu() 
    {
       ......
    }

当您将 OutputCache 与子操作一起使用时,您不能指定诸如 Location 或 NoStore 之类的属性。所以问题是,如果我不能为子操作指定缓存位置(客户端、服务器、任何),它默认存储在哪里?谢谢!!

(对不起我的英语不好)

4

3 回答 3

2

我只是在这里猜测,但它可能会存储在服务器上。将部分视图(可能是子操作的结果)存储在客户端上的想法没有意义——客户端不知道服务器上的页面操作故障。

在我看来,除非整个页面被缓存,否则客户端必须去服务器获取渲染的页面,此时服务器可以返回缓存子动作结果。

于 2014-01-24T19:06:58.373 回答
2

当我们将输出缓存用于子操作时,它缓存在服务器而不是客户端。

于 2016-05-02T10:20:17.053 回答
-3

不幸的是它被缓存在客户端,只需在您的 childAction 方法上设置一个断点,并从多个浏览器运行应用程序,因为每个浏览器 ChildAction 将在缓存持续时间内调用。

于 2015-05-25T19:13:22.683 回答