Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc MVC中的多输出缓存_Asp.net Mvc_Asp.net Mvc 3_Asp.net Mvc 4_Outputcache - Fatal编程技术网

Asp.net mvc MVC中的多输出缓存

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吗?例如,假设我想将OutputCache副本一个存储在服务器上,另一个存储在客户机上。我知道我们可以使用Location=OutputCacheLocation.ServerAndClient来实现这一点,但是我想为客户机和服务器指定不同的持续时间,让服务器的持续时间更长,而客户机的持续时间更短?那么,有了这个要求,我可以得到如下的信息吗

[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来覆盖这个行为。此线程可能很有用: