Asp.net mvc 子操作的MVC OutputCache:存储在哪里?

Asp.net mvc 子操作的MVC OutputCache:存储在哪里?,asp.net-mvc,caching,model-view-controller,outputcache,child-actions,Asp.net Mvc,Caching,Model View Controller,Outputcache,Child Actions,我使用OutputCache在我的应用程序中缓存水平菜单和垂直菜单。我通常在要缓存的操作中使用类似的内容 [OutputCache(Duration=3600,VaryByParam=“none”,Location=OutputCacheLocation.Client,NoStore=true)] 公共ActionResult ActionName() { ....... } 但如果这是一个孩子的行动,我必须使用 [ChildActionOnly] [OutputCache(持续时间=180,

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

[OutputCache(Duration=3600,VaryByParam=“none”,Location=OutputCacheLocation.Client,NoStore=true)]
公共ActionResult ActionName()
{
.......
}
但如果这是一个孩子的行动,我必须使用

[ChildActionOnly]
[OutputCache(持续时间=180,VaryByParam=“无”)]
公共操作结果菜单()
{
......
}
当您将OutputCache与子操作一起使用时,您不能指定像Location或NoStore这样的属性。所以问题是,如果我不能为一个子操作指定缓存位置(客户端、服务器、任意),那么默认情况下它存储在哪里??谢谢


(对不起我的英语)

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


在我看来,除非缓存了整个页面,否则客户端必须转到服务器来渲染页面,在这一点上,服务器可以返回缓存子操作结果。

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

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

这是不真实的。它存储在服务器端。见kdawg的答案。@ChadRichardson这并不是完全不真实的。若您添加Location=Client,那个么它将在每个请求中命中控制器。这真的很奇怪,因为对于其他位置值,它只是抛出一个异常,即不能使用位置和其他值。所以解决方案是删除Location=OutputCacheLocation.Client注意:请记住,这只适用于子操作。