我正在使用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等属性。所以问题是,如果我不能为子操作指定缓存位置(客户端,服务器,任何),默认存储在哪里?谢谢!
(对不起我的英文)
答案 0 :(得分:2)
我只是在这里猜测,但它可能只存储在服务器上。将部分视图(可能是子操作的结果)存储在客户端上的想法没有意义 - 客户端不知道页面在服务器上的操作分解。
我看到它的方式,除非缓存整个页面,否则客户端必须转到服务器以获取呈现的页面,此时,服务器可以返回缓存子操作结果。
答案 1 :(得分:2)
当我们对子操作使用输出缓存时,它将缓存在服务器而不是客户端。
答案 2 :(得分:-3)
不幸的是它被缓存在客户端上,只需在childAction方法上设置断点,并从多个浏览器运行应用程序,对于每个浏览器,ChildAction将在缓存持续时间内调用。