Condividi tramite


Procedura: memorizzare nella cache versioni di una pagina tramite stringhe personalizzate

Aggiornamento: novembre 2007

Oltre a variare la cache di output in base al tipo e ai parametri del browser, è possibile memorizzare nella cache più versioni dell'output di una pagina in base alle diverse stringhe restituite da un metodo specificato.

Quando si memorizzano nella cache pagine basate su stringhe personalizzate, per prima cosa occorre specificare un identificatore per la stringa personalizzata da utilizzare. È quindi necessario creare nel file Global.asax dell'applicazione un metodo che accetti l'identificatore e restituisca un valore in base a cui fare variare la cache di output.

Per memorizzare nella cache più versioni dell'output di una pagina in base a stringhe personalizzate

  1. Nella pagina ASP.NET includere una direttiva @ OutputCache con gli attributi Duration e VaryByParam richiesti. L'attributo Duration deve essere impostato su un numero intero maggiore di zero. Se non si desidera utilizzare la funzionalità offerta dall'attributo VaryByParam, impostare il valore dell'attributo su "None".

  2. Per impostare la stringa personalizzata in modo dichiarativo, includere nella direttiva @ OutputCache l'attributo VaryByCustom impostato sulla stringa in base alla quale si desidera fare variare la cache di output.

    La direttiva che segue consente di differenziare l'output della pagina in base alla stringa personalizzata "minorversion".

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
    
  3. Per impostare la stringa personalizzata a livello di codice, chiamare il metodo SetVaryByCustom passandogli la stringa personalizzata da utilizzare.

    Nell'esempio di codice riportato di seguito viene illustrato come impostare la stringa personalizzata su "minorversion".

    Response.Cache.SetVaryByCustom("minorversion");
    
    Response.Cache.SetVaryByCustom("minorversion")
    
    Nota:

    Se si tenta di impostare la stringa personalizzata sia a livello di codice che in modo dichiarativo, si otterrà InvalidOperationException. È necessario scegliere uno dei due approcci.

  4. Nel file Global.asax dell'applicazione eseguire l'override del metodo GetVaryByCustomString per specificare il comportamento della cache di output per la stringa personalizzata.

    Come il relativo parametro arg, il metodo di cui è stato eseguito l'override accetta la stringa impostata nell'attributo VaryByCustom o nel metodo SetVaryByCustom. Ad esempio, per alcune pagine la memorizzazione nella cache potrebbe essere eseguita in base al numero di versione secondaria del browser che ha effettuato la richiesta. Per tali pagine è possibile impostare l'attributo VaryByCustom su "minorversion". Quindi, nel metodo GetVaryByCustomString di cui è stato eseguito l'override, è possibile verificare il parametro arg e restituire stringhe diverse a seconda che il valore del parametro arg sia "minorversion" o no.

    Nell'esempio di codice riportato di seguito viene illustrato un file Global.asax con un override del metodo GetVaryByCustomString.

    <%@ Application language="C#" %>
    <script >
    public override string GetVaryByCustomString(HttpContext context, 
        string arg)
    {
        if(arg == "minorversion")
        {
            return "Version=" +
                context.Request.Browser.MinorVersion.ToString();
        }
        return base.GetVaryByCustomString(context, arg);
    }
    </script>
    
    <script >
    Public Overrides Function GetVaryByCustomString(context _
            As HttpContext, arg As String) As String
        If (arg = "minorversion") Then
            Return "Version=" & _
                context.Request.Browser.MinorVersion.ToString()
        return base.GetVaryByCustomString(context, arg);
    End Function
    </script>
    

Vedere anche

Attività

Procedura: impostare il valore di memorizzazione nella cache di una pagina ASP.NET in modo dichiarativo

Concetti

Memorizzazione nella cache di pagine ASP.NET

Impostazione del valore di memorizzazione nella cache di una pagina

Memorizzazione nella cache di più versioni di una pagina