2016-03-19 6 views
1

Können wir mehrere OutputCache für eine Aktion definiert haben? Für Beispiel Sagen Sie, ich möchte OutputCache Kopie eins in Server und eine andere in Client speichern. Ich weiß, dass dies wir mit Location=OutputCacheLocation.ServerAndClient tun können, aber sagen, dass ich verschiedene Duration für Client angeben möchten und Server, eine größere Duration für Server mit und kleineren Duration für Client? Also mit dieser Anforderung kann ich es wie folgt haben?Mehrere OutputCache in 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); 
} 

Wird diese gültig nimmt zu haben oder MVCOutputCache berücksichtigt neueste?

Antwort

3

Wenn Sie an der Quelle des OutputCacheAttribute schauen, werden Sie feststellen, dass das Attribut mit AllowMultiple-Eigenschaft auf falsch definiert:

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

So wird es nicht funktionieren

+0

Können wir das außer Kraft setzen? –

+0

Auch jede Alternative für meine Anforderung oder Gedanken? –

+1

Sie können dieses Verhalten nicht durch einfaches Erweitern von Default OutputCacheAttribute überschreiben. Dieser Thread könnte nützlich sein: http://stackoverflow.com/questions/14823057/how-to-set-different-cache-expire-times-for-client-and-server-caches –

Verwandte Themen