Memorizzazione nella cache di più versioni di una pagina in base al browser richiedente

È possibile utilizzare l'attributo VaryByCustom della direttiva @ OutputCache o il metodo HttpCachePolicy.SetVaryByCustom per variare le versioni dell'output della pagina a seconda della versione principale del browser che richiede la pagina. Le informazioni sulla versione principale e sul tipo di browser vengono passate tramite la proprietà HttpBrowserCapabilities.MajorVersion associata alla richiesta corrente. È possibile accedere a queste informazioni mediante l'oggetto Request associato alla pagina, ma è più semplice utilizzare la funzionalità incorporata fornita con ASP.NET.

Per memorizzare nella cache di output più versioni di una pagina in modo dichiarativo in base al tipo di browser

  1. Includere nel file ASPX 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. Includere l'attributo VaryByCustom nel corpo della direttiva **@OutputCache** e impostarlo su browser.

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="browser" %>
    

Per memorizzare nella cache più versioni di una pagina di risposta direttamente da codice, in base a stringhe personalizzate

  1. Nel blocco di dichiarazione del codice o nella classe sottostante il codice della pagina, utilizzare la sintassi Response.Cache per impostare i criteri di scadenza e di visibilità per il contenuto della pagina memorizzato nella cache. È possibile eseguire questa operazione utilizzando, rispettivamente, i metodi HttpCachePolicy.SetExpires e HttpCachePolicy.SetCacheability. Per ulteriori informazioni, vedere Impostazione di scadenze per la memorizzazione di pagine nella cache e Impostazione del valore di memorizzazione nella cache di una pagina.

  2. Nello stesso codice specificare browser nel parametro custom del metodo SetVaryByCustom.

    Response.Cache.SetVaryByCustom("browser");
    [Visual Basic]
    Response.Cache.SetVaryByCustom("browser")
    

Indipendentemente dalla tecnica utilizzata, quando si specifica browser in ASP.NET vengono automaticamente memorizzate nella cache le versioni dell'output della pagina in base al nome del browser e alle informazioni sulla versione principale passate nella proprietà Request.Browser.Type, insieme alla richiesta corrente. Queste informazioni sono disponibili tramite la classe HttpContext associata alla richiesta.

Quando, ad esempio, una pagina viene richiesta da un browser Internet Explorer 5, la versione della pagina viene memorizzata nella cache per il valore di stringa "IE5", che viene passato nella proprietà Type per la richiesta. Quando la pagina viene richiesta da un browser Netscape Navigator, da un'altra versione di Internet Explorer o da qualsiasi altro browser, alla cache di output viene aggiunta un'altra versione della pagina.

Vedere anche

@ OutputCache | Memorizzazione nella cache di pagine ASP.NET | HttpCachePolicy.SetVaryByCustom | Classe HttpResponse | Classe HttpCachePolicy