2016-03-19 7 views
1

アクションに複数のOutputCacheを定義できますか?例えば、 OutputCacheコピーをServerに、もう1つをClientに保存したいとします。 Location=OutputCacheLocation.ServerAndClientでこれを行うことができますが、私はをClientServerに指定したいと言っています。DurationServerと小さく、DurationClientです。ですから、このような要件を以下に示すことができますか?MVCの複数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); 
} 

これは持っているか、MVCする有効なのでしょう考慮OutputCache最新かかりますか?あなたがOutputCacheAttributeのソースを見れば

答えて

3

あなたは属性をfalseに設定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 –