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

Traduzione articoli Traduzione articoli
Identificativo articolo: 308375 - Visualizza i prodotti a cui si riferisce l?articolo.
Questo articolo č stato precedentemente pubblicato con il codice di riferimento I308375
Espandi tutto | Chiudi tutto

In questa pagina

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 sezione Riferimenti.

Requisiti

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

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" %>

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 digitare OutputCacheDemo , 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 digitare OutputCacheDuration.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.

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 digitare OutputCacheVaryByParam.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.

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.

RIFERIMENTI

Per ulteriori informazioni sull'inserimento nella cache dell'output delle pagine, visitare i seguenti siti Web Microsoft (informazioni in lingua inglese):
Microsoft .NET Framework Software Development Kit (SDK)
http://msdn.microsoft.com/library/en-us/dnanchor/html/netfxanchor.asp

@OutputCache
http://msdn2.microsoft.com/en-us/library/hdxfb6cy(vs.71).aspx

Proprietā

Identificativo articolo: 308375 - Ultima modifica: lunedė 21 maggio 2007 - Revisione: 4.2
Le informazioni in questo articolo si applicano a
  • Microsoft ASP .NET (incluso in .NET Framework)
  • Microsoft Visual C# .NET 2002 Standard Edition
Chiavi: 
kbhowto kbhowtomaster kbgrpdsasp KB308375
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com