用于子操作的MVC OutputCache:它存储在哪里?

时间:2013-11-13 13:21:14

标签: asp.net-mvc caching model-view-controller outputcache child-actions

我正在使用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等属性。所以问题是,如果我不能为子操作指定缓存位置(客户端,服务器,任何),默认存储在哪里?谢谢!

(对不起我的英文)

3 个答案:

答案 0 :(得分:2)

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

我看到它的方式,除非缓存整个页面,否则客户端必须转到服务器以获取呈现的页面,此时,服务器可以返回缓存子操作结果。

答案 1 :(得分:2)

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

答案 2 :(得分:-3)

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