MVC 中的多个 OutputCache
Multiple OutputCache in MVC
我们可以为一个动作定义多个 OutputCache
吗?对于前。说我想存储 OutputCache
在 Server
中复制一个,在 Client
中复制另一个。我知道我们可以用 Location=OutputCacheLocation.ServerAndClient
来做,但是我想为 Client
和 Server
指定不同的 Duration
,为 [=13] 指定更大的 Duration
=] 和更小的 Duration
for Client
?那么有了这个要求,我可以像下面这样吗?
[OutputCache(Duration = 3600, Location = OutputCacheLocation.Server, VaryByParam = "pID", NoStore = true)] //Server Cache for 1 hour
[OutputCache(Duration = 600, Location = OutputCacheLocation.Client, VaryByParam = "pID", NoStore = true)] //Client Cache for 10 minutes
public ActionResult GetDetails(string pID)
{
//some code
return View(model);
}
这是否有效或 MVC
考虑了最新的 OutputCache
?
如果您查看 OutputCacheAttribute 的源代码,您会注意到该属性的定义 AllowMultiple
属性 设置为 false:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter
所以不行
我们可以为一个动作定义多个 OutputCache
吗?对于前。说我想存储 OutputCache
在 Server
中复制一个,在 Client
中复制另一个。我知道我们可以用 Location=OutputCacheLocation.ServerAndClient
来做,但是我想为 Client
和 Server
指定不同的 Duration
,为 [=13] 指定更大的 Duration
=] 和更小的 Duration
for Client
?那么有了这个要求,我可以像下面这样吗?
[OutputCache(Duration = 3600, Location = OutputCacheLocation.Server, VaryByParam = "pID", NoStore = true)] //Server Cache for 1 hour
[OutputCache(Duration = 600, Location = OutputCacheLocation.Client, VaryByParam = "pID", NoStore = true)] //Client Cache for 10 minutes
public ActionResult GetDetails(string pID)
{
//some code
return View(model);
}
这是否有效或 MVC
考虑了最新的 OutputCache
?
如果您查看 OutputCacheAttribute 的源代码,您会注意到该属性的定义 AllowMultiple
属性 设置为 false:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter
所以不行