2013-07-02 24 views
7

C'è un modo per impostare la durata della memorizzazione nella cache in web.config per le pagine MVC4 .net? Ho:MVC4 Visualizza la durata della cache nel file di configurazione?

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

che non viene compilato perché

Un argomento attributo deve essere un'espressione costante, typeof espressione o creazione matrice espressione di un tipo di parametro di attributo

Abbiamo molto traffico spikey e vorrebbe essere in grado di cambiare questo valore molto rapidamente senza dover aggiungere una nuova build. È possibile?

risposta

15

È possibile utilizzare OutputCache profiles; definire una sezione 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> 

Usalo sui metodi di azione del controller tramite un attributo come hai già fatto. Basta usare la proprietà CacheProfile.

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

È possibile creare diversi profili per ogni scenario di caching che si ha.

More info on caching at MSDN

+0

Ecco come ho finito per farlo. Mi chiedo se ci sia un modo più programmatico per accedere a questi valori. Questa potrebbe essere l'unica risposta però. –

+1

La Bounty sarà premiata domani per questo, mi ha fatto risparmiare un sacco di tempo. –

Problemi correlati