2013-07-02 13 views
7

Gibt es eine Möglichkeit, die Dauer des Caching in der web.config für MVC4 .net-Seiten festzulegen? Ich habe:MVC4 Cache-Dauer in der Konfigurationsdatei anzeigen?

[OutputCache(Duration = Convert.ToInt32(ConfigurationManager.AppSettings["cache.eventPage"]), VaryByParam = "Id")] 
public ActionResult.... 

Welche kompilieren wird nicht wegen

Ein Attribut Argument ein konstanter Ausdruck sein muss, typeof Ausdruck oder Array-Erstellungsausdruck eines Attributs Parametertyp

Wir haben sehr spikey Verkehr und möchte diesen Wert sehr schnell ändern können, ohne einen neuen Build auszugeben. Ist das möglich?

Antwort

15

Sie können OutputCache profiles verwenden; Definieren Sie einen Abschnitt in web.config

<system.web> 
<caching> 
    <outputCacheSettings> 
    <outputCacheProfiles> 
     <add name="CacheProfile1" duration="10" /> <!--10 seconds --> 
     <add name="CacheProfile2" duration="3600" /> <!--one hour--> 
     <add name="CacheProfileNone" duration="0" /> <!--disabled--> 
    </outputCacheProfiles> 
    </outputCacheSettings> 
</caching> 
</system.web> 

Verwenden Sie es auf Ihre Controller-Aktion Methoden über ein Attribut, wie Sie bereits getan haben. Verwenden Sie einfach die CacheProfile Eigenschaft.

[OutputCache(CacheProfile = "CacheProfile1",VaryByParam = "Id")] 

Sie können für jedes Cache-Szenario, das Sie haben, verschiedene Profile erstellen.

More info on caching at MSDN

+0

So habe ich es gemacht. Ich frage mich, ob es einen programmatischeren Zugang zu diesen Werten gibt. Dies kann jedoch die einzige Antwort sein. –

+1

Bounty wird morgen dafür vergeben, rettete mir viel Zeit. –

Verwandte Themen