2009-11-24 12 views
7

Ho una pagina che desidero memorizzare nella cache utilizzando la direttiva OutputCache. Tuttavia, sto usando un modulo di reindirizzamento URL per indirizzare più URL su questa pagina, ognuno con contenuti diversi.Modifica OutputCache in base all'URL

C'è un modo per utilizzare la cache dell'output per ogni URL? Non ci sono altri criteri con cui ho bisogno di variare i risultati della cache.

risposta

10

Alla fine questo era abbastanza semplice da risolvere.

  1. aggiungere la seguente direttiva alla pagina che deve essere memorizzata nella cache:

    <% @ OutputCache Duration = "600" location = VaryByParam "a valle" = "none" VaryByCustom = "RawURL" %>

  2. Aggiungere questo metodo per il file Global.asax

    public override string GetVaryByCustomString(HttpContext context, string custom) 
    { 
        switch (custom.ToUpper()) 
        { 
         case "RAWURL": 
          return context.Request.RawUrl; 
    
         default: 
          return ""; 
        } 
    } 
    
+0

Questo è intelligente ... ma restituisce ancora 200 anziché 304 (non modificati) come con un URL non indirizzato. Quindi, anche se potrebbe non essere * generare * di nuovo la pagina, il client deve ancora * ricominciare * di nuovo, piuttosto che usare la sua cache locale. Comunque, bella domanda. – harpo

0

A livello di programmazione è possibile impostare le opzioni di Caching utilizzando Response.Cache. È possibile attivare la variabile querystring e, a seconda dei casi, impostare le proprietà su Response.Cache in modo appropriato.

MSDN on Cache object
Another helpful article from aspalliance.com

+0

posso anche variare la cac si basa sulle intestazioni delle richieste, ma queste non cambiano e non ci sono variabili di querystring usate – Blatfrig

Problemi correlati