2016-03-19 59 views
1

我們可以爲一個操作定義多個OutputCache嗎?例如。說我想存儲OutputCache複製一個在Server和另一個在Client。我知道,這我們可以Location=OutputCacheLocation.ServerAndClient做,但說我要爲ClientServer指定不同的Duration,具有Server更大DurationClientDuration?所以有了這個要求,我可以如下所示?MVC中的多輸出緩存

[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考慮嗎?

回答

3

如果你看看OutputCacheAttribute源你會發現,在屬性與AllowMultiple屬性集定義爲false:

[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method, Inherited = true, AllowMultiple = false)] 
public class OutputCacheAttribute : ActionFilterAttribute, IExceptionFilter 

所以它不會工作

+0

我們能覆蓋此? –

+0

此外,我的要求或想法的任何替代方案? –

+1

只需擴展默認的OutputCacheAttribute即可覆蓋此行爲。此線程可能是有用的:http://stackoverflow.com/questions/14823057/how-to-set-different-cache-expire-times-for-client-and-server-caches –