2016-03-19 7 views
1

Можем ли мы иметь несколько OutputCache, определенных для действия? Напр. скажем, я хочу хранить OutputCache копия один в Server и еще один в Client. Я знаю, что это можно сделать с Location=OutputCacheLocation.ServerAndClient, но сказать, что я хочу, чтобы указать разные Duration для Client и Server, имеющие больший Duration для Server и меньше Duration для Client? Итак, с этим требованием я могу получить его, как показано ниже?Несколько OutputCache в 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 собственности на ложь:

[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 –