Asp.net mvc MVC中的多输出缓存
我们可以为一个操作定义多个OutputCache吗?例如,假设我想将OutputCache副本一个存储在服务器上,另一个存储在客户机上。我知道我们可以使用Location=OutputCacheLocation.ServerAndClient来实现这一点,但是我想为客户机和服务器指定不同的持续时间,让服务器的持续时间更长,而客户机的持续时间更短?那么,有了这个要求,我可以得到如下的信息吗Asp.net mvc MVC中的多输出缓存,asp.net-mvc,asp.net-mvc-3,asp.net-mvc-4,outputcache,Asp.net Mvc,Asp.net Mvc 3,Asp.net Mvc 4,Outputcache,我们可以为一个操作定义多个OutputCache吗?例如,假设我想将OutputCache副本一个存储在服务器上,另一个存储在客户机上。我知道我们可以使用Location=OutputCacheLocation.ServerAndClient来实现这一点,但是我想为客户机和服务器指定不同的持续时间,让服务器的持续时间更长,而客户机的持续时间更短?那么,有了这个要求,我可以得到如下的信息吗 [OutputCache(Duration = 3600, Location = OutputCacheLo
[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?如果您查看属性的来源,您会注意到属性是在AllowMultiple属性设置为false的情况下定义的:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)]
public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter
所以它不起作用我们可以覆盖这个吗?还有,我的需求或想法有什么替代方案吗?你不能通过简单地扩展默认的OutputCacheAttribute来覆盖这个行为。此线程可能很有用: