2016-03-19 12 views
1

Bir eylem için tanımlanmış birden çok OutputCache olabilir mi? Örn. OutputCache kopyasını Server numarasına ve Client numarasına başka bir tane de kaydetmek istiyorum. Ben Server için Duration daha büyük ve Client için Duration küçük olan bu biz Location=OutputCacheLocation.ServerAndClient ile yapabilirsiniz biliyorum ama Client ve Server için Duration farklı belirtmek istediğini söylüyorsun? Yani bu gereklilik ile aşağıdaki gibi olabilir? MVC'de Çoklu OutputCache

[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); 
} 

bu olması geçerli olması veya MVC dikkate OutputCache son alır mısın?

cevap

3

Eğer OutputCacheAttribute kaynağına bakarsanız özellik false AllowMultiple mülkiyet seti ile tanımlandığını göreceksiniz:

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

o

+0

bu geçersiz kılabilir miyim çalışmaz? –

+0

Ayrıca, benim gereksinim veya düşünce için herhangi bir alternatif? –

+1

Bu davranışı, yalnızca varsayılan OutputCacheAttribute genişleterek geçersiz kılabilirsiniz. Bu iş parçacığı yararlı olabilir: http://stackoverflow.com/questions/14823057/how-to-set-different-cache-expire-times-for-client-and-server-caches –