Al momento sei offline in attesa che la connessione Internet venga ristabilita

HOW TO: Controllare l'inserimento nella cache dell'output delle pagine in ASP.NET utilizzando Visual C# .NET

Questo articolo è stato precedentemente pubblicato con il codice di riferimento I308375
Per la versione di questo articolo relativa a Microsoft Visual Basic .NET vedere (gli articoli con prefisso "Q" contengono informazioni in inglese): 308516.

CONTENUTO DELL'ATTIVITÀ

Sommario
In questo articolo viene illustrato come utilizzare l'istruzione @ OutputCache per controllare l'inserimento nella cache dell'output della pagina in ASP.NET utilizzando Visual C# .NET. È possibile utilizzare questa tecnica per inserire nella cache le pagine più frequentemente visitate del proprio sito, incrementando considerevolmente la velocità effettiva di trasmissione del server Web, solitamente misurata in richieste al secondo. Oltre al codice di esempio che illustra come utilizzare gli attributi Duration e VaryByParam in questo articolo viene fornita una breve descrizione di altri approcci che è possibile utilizzare con l'istruzione @ OutputCache.

NOTA: in questo articolo non vengono descritti nel dettaglio tutti gli attributi dell'istruzione @ OutputCache e i rispettivi utilizzi. Per ulteriori informazioni in proposito, vedere la sezioneRiferimenti.

Torna all'inizio

Requisiti

  • Microsoft Windows 2000 o Windows XP
  • Microsoft .NET Framework
  • Microsoft Internet Information Server (IIS)
  • ASP.NET Premium Edition
Torna all'inizio

Introduzione all'istruzione @ OutputCache

Per utilizzare l'istruzione @ OutputCache al fine di controllare l'inserimento nella cache dell'output di una pagina è sufficiente aggiungere l'istruzione all'inizio della pagina. Il metodo Page.InitOutputCache provvederà a tradurre l'istruzione in metodi di classe HttpCachePolicy.

L'istruzione @ OutputCache include i seguenti attributi e impostazioni:
  • Duration: questo attributo specifica quanto a lungo un elemento viene conservato nella cache. Il valore di Duration è elencato in secondi.
  • VaryByParam: questo attributo determina le voci della cache in base ai parametri Get o Post. Se ad esempio una variabile QueryString denominata testVal viene impostata per l'attributo VaryByParam, ogni richiesta di pagina contenente un valore diverso per testVal verrà inserita nella cache in una pagina separata. Il codice riportato di seguito illustra la sintassi dell'attributo VaryByParam:
    <%@ OutputCache Duration="Seconds" VaryByParam="testVal"%>
    NOTA: è possibile specificare un asterisco (*) cosicché vengano inserite nella cache tutte le diverse versioni dell'elemento oppure specificare "none" se esiste una sola versione dell'elemento inserito nella cache.
  • Location: questo attributo determina in che punto l'elemento verrà inserito nella cache. È possibile specificare le seguenti posizioni:
    • Any
    • Client
    • Downstream
    • Server
    • None

    Il codice riportato di seguito illustra la sintassi dell'attributo Location:
    <%@ OutputCache Duration="Seconds" Location="Client" %>
  • Il codice riportato di seguito illustra la sintassi dell'attributo VaryByCustom: questo attributo contiene l'impostazione predefinita Browser, in base a cui viene inserita nella cache una diversa istanza dell'elemento per ciascuna versione del browser che ne fa richiesta, ad esempio, se sia Microsoft Internet Explorer 5 che Internet Explorer 5.5 richiedono l'elemento. Quando VaryByCustom è impostato su Browser, nella cache esisterà una voce per ciascuna versione del browser. Non è possibile fornire una stringa per controllare l'inserimento nella cache per altri scenari personalizzati. La stringa non ha alcun significato a meno che non venga fornito un codice per sovrascrivere il metodo HttpApplication.GetVaryByCustomString nel file Global.asax.

    Il codice riportato di seguito illustra la sintassi per l'attributo VaryByCustom:
    <%@ OutputCache Duration="Seconds" VaryByCustom="string" %>
  • Il codice riportato di seguito illustra la sintassi dell'attributo VaryByHeader: questo attributo consente di specificare un particolare valore di intestazione HTTP come criterio per determinare le varie voci della cache. Il codice riportato di seguito illustra la sintassi per l'attributo VaryByHeader:
    <%@ OutputCache Duration="60" VaryByHeader="Accept-Language" %>
Torna all'inizio

Procedura per creare un esempio di @ OutputCache Duration

La procedura descritta di seguito consente di utilizzare l'attributo Duration per inserire nella cache l'output della pagina specificando per quanto tempo l'elemento verrà conservato nella cache.
  1. Creare un nuovo progetto Applicazione Web ASP.NET di Visual Basic, come illustrato di seguito:
    1. Aprire Visual Studio .NET.
    2. Scegliere Nuovo dal menu File, quindi Progetto.
    3. Nella finestra di dialogo Nuovo progetto fare clic su Progetti di Visual C# in Tipi progetto e su Applicazione Web ASP.NET in Modelli. Nella casella di testo Nome digitareOutputCacheDemo, quindi scegliere OK.
  2. Creare una nuova pagina aspx in Visual Studio .NET, come illustrato di seguito:
    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto, scegliere Aggiungi, quindi Aggiungi Web Form.
    2. Nella casella di testo Nome digitareOutputCacheDuration.aspx,quindi scegliere Apri.
  3. Eliminare il codice predefinito aggiunto da Visual Studio .NET alla pagina.
  4. Evidenziare il codice riportato di seguito, fare clic con il pulsante destro del mouse sul codice, quindi scegliere Copia. In Visual Studio .NET scegliere Incolla dal menu Modifica per incollare il codice nella pagina aspx:
    <%@ OutputCache Duration="20" VaryByParam="none"%><HTML>   <HEAD>   <script language="C#" runat="server">   void Page_Load(object sender, EventArgs e)    {	      Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();   }   </script>   </HEAD>   <body>      <STRONG>@ OutputCache Duration Sample</STRONG>      <hr>      <br>      <asp:Label id="Label1" runat="server">Label</asp:Label>      <br>   </body></HTML>
  5. Scegliere Salva OutputCacheDuration.aspx dal menu File per salvare le modifiche apportate alla pagina.
  6. Nell'IDE (Integrated Development Environment) scegliere Genera dal menu Genera.
  7. Per eseguire il codice di esempio, fare clic con il pulsante destro del mouse su OutputCacheDuration.aspx in Esplora soluzioni, quindi scegliere Visualizza nel browser.
  8. Dopo la visualizzazione della pagina nel browser, prendere nota dell'ora visualizzata nell'etichetta.
  9. Aggiornare la pagina nel browser. L'ora sarà la stessa indicata precedentemente. Aggiornando la pagina una volta scaduta la durata di 20 secondi, verrà visualizzata una nuova versione della pagina inserita nella cache.

    NOTA: se la pagina viene visualizzata in un browser esterno, è possibile premere F5 per aggiornare la pagina. Se la pagina viene visualizzata nel browser interno IDE di Visual Studio .NET, è possibile fare clic con il pulsante destro del mouse sulla pagina e scegliere Aggiorna per aggiornare la pagina.
Torna all'inizio

Procedura per creare un esempio di @ OutputCache VaryByParam

La procedura descritta di seguito illustra come utilizzare l'attributo VaryByParam per inserire l'output delle pagine nella cache in modo che nella cache siano presenti diverse versioni di una pagina in base al valore di una delle variabili QueryString.
  1. Creare una nuova pagina aspx in Visual Studio .NET, come illustrato di seguito:
    1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul nodo del progetto, scegliere Aggiungi, quindi Aggiungi Web Form.
    2. Nella casella di testo Nome digitareOutputCacheVaryByParam.aspx, quindi scegliere Apri.
  2. Eliminare il codice predefinito aggiunto da Visual Studio .NET alla pagina.
  3. Evidenziare il codice riportato di seguito, fare clic con il pulsante destro del mouse sul codice, quindi scegliere Copia. In Visual Studio .NET scegliere Incolla dal menu Modifica per incollare il codice nella pagina aspx:
    <%@ OutputCache Duration="20" VaryByParam="testVal"%><HTML>   <HEAD>      <script language="C#" runat="server">   void Page_Load(object sender, EventArgs e)    {	      Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();   }   </script>   </HEAD>   <body>      <P>         <STRONG>@ OutputCache VaryByParam Sample</STRONG>      </P>      <P>         <hr>      </P>      <P>         <br>         <asp:Label id="Label1" runat="server"></asp:Label>         <br>         <hr>         <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=123">testVal(123)</a>         <br>         <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=345">testVal(345)</a>      </P>   </body></HTML>
    NOTA: è necessario modificare i due collegamenti ipertestuali contenuti nel codice precedente in base al nome del server Web. Notare inoltre che l'attributo VaryByParam è impostato per variare a seconda del valore della variabile QueryString per testVal. Questo fa sì che l'output della pagina venga inserito nella cache per ciascuna istanza che presenta lo stesso valore della variabile QueryString per testVal.
  4. Scegliere Salva OutputCacheVaryByParam.aspx dal menu File per salvare la pagina.
  5. Nell'IDE (Integrated Development Environment) scegliere Genera dal menu Genera.
  6. Per eseguire il codice di esempio, fare clic con il pulsante destro del mouse su OutputCacheVaryByParam.aspx in Esplora soluzioni, quindi scegliere Visualizza nel browser.
  7. Una volta che la pagina è stata visualizzata nel browser, fare clic su testVal(123). Questo fa sì che il browser torni alla pagina ma con la variabile QueryStringtestVal impostata a "123". Prendere nota dell'ora visualizzata.
  8. Fare nuovamente clic su testVal(123). L'ora sarà la stessa indicata precedentemente. L'output della pagina è stato inserito nella cache in base al valore della variabile testVal.
  9. Fare clic su testVal(345). Nella pagina verrà visualizzata un'ora diversa.
  10. Fare nuovamente clic su testVal(345). L'output della pagina precedente verrà inserito nella cache e visualizzato nel browser.
  11. Fare clic su testVal(123) per tornare alla prima istanza. Verranno visualizzate diverse versioni dell'output della pagina inserite nella cache, in base al valore della variabile QueryString fornito.
Torna all'inizio

Risoluzione dei problemi

  • Quando si utilizza VaryByParam, fare attenzione perché le modifiche alle maiuscole e minuscole della variabile QueryString determinano la creazione di nuove voci nella cache.
  • Ricordare che il valore di Duration è specificato in secondi.
  • Quando si utilizza VaryByCustom e si sovrascrive il metodo HttpApplication.GetVaryByCustomString nel file Global.asax, viene utilizzata l'impostazione predefinita di Browser se non si trova alcuna corrispondenza per la stringa personalizzata fornita dell'attributo.
Torna all'inizio

RIFERIMENTI

Per ulteriori informazioni sull'inserimento nella cache dell'output delle pagine, visitare i seguenti siti Web Microsoft (informazioni in lingua inglese):Torna all'inizio
Proprietà

ID articolo: 308375 - Ultima revisione: 05/21/2007 07:36:00 - Revisione: 4.2

  • Microsoft ASP .NET (incluso in .NET Framework)
  • Microsoft Visual C# .NET 2002 Standard Edition
  • kbhowto kbhowtomaster kbgrpdsasp KB308375
Feedback