Condividi tramite


Procedura dettagliata: utilizzo della memorizzazione nella cache dell'output per migliorare le prestazioni di un sito Web

Aggiornamento: novembre 2007

Un aspetto di fondamentale importanza per tutte le applicazioni Web è rappresentato dalle prestazioni. La riduzione di gran parte dell'elaborazione di un server Web deve essere conforme ai risultati delle richieste singole in tempi di risposta veloci, alla capacità del server di gestire più richieste simultanee e a un caricamento ridotto su sistemi di dati back-end e intermedi.

Per ottenere migliori prestazioni in ASP.NET è possibile utilizzare la memorizzazione nella cache di output che consente di ridurre il carico di lavoro del server. La memorizzazione nella cache di output consiste in un'ottimizzazione che consente di ridurre il tempo di risposta del server Web.

In genere, quando in un browser si richiede una pagina ASP.NET, in ASP.NET viene creata un'istanza della pagina, si eseguono tutti i codici presenti nella pagina, si eseguono le query di database (se presenti), si assembla la pagina in modo dinamico e, infine, l'output risultante viene inviato al browser. La memorizzazione nella cache di output consente di inviare in ASP.NET una copia pre-elaborata di una pagina invece di eseguire questa procedura a ogni richiesta. Questa differenza consente di dimezzare gran parte dell'elaborazione eseguita dal server Web, incrementandone le prestazioni e consentendone una maggiore scalabilità.

Di seguito sono elencate le attività illustrate nella procedura dettagliata:

  • Memorizzazione di pagine nella cache, utilizzando un'istruzione Page per disporre della pagina interamente memorizzata nella cache di output, a prescindere dal tipo di browser e dai parametri singoli, oppure utilizzando i dati.

  • Utilizzo dei profili della cache a livello di applicazione, una funzionalità che consente di defìnire le impostazioni della memorizzazione nella cache di output per un'applicazione intera. Le pagine singole possono essere associate con i profili contenuti nel file Web.config. Questa procedura consente di controllare a livello centrale la memorizzazione nella cache invece di modificare ciascuna pagina.

  • Memorizzazione nella cache in base ai singoli parametri inviati con la pagina.

Prerequisiti

Per completare questa procedura dettagliata è necessario:

  • Visual Web Developer (Visual Studio).

  • Microsoft .NET Framework Versione 2.0.

Creazione del sito Web

Se un sito Web è già stato creato in Visual Web Developer (vedere Procedura dettagliata: creazione di una pagina Web di base in Visual Web Developer), è possibile utilizzare quel sito Web e passare all'argomento successivo contenuto in questa procedura dettagliata. In caso contrario, creare un sito e una pagina Web nuovi attenendosi alla procedura riportata di seguito.

Per creare un sito Web di file system

  1. Aprire Visual Web Developer.

  2. Scegliere Nuovo sito Web dal menu File. In Visual Web Developer Express Edition, scegliere Nuovo dal menu File, quindi fare clic su Sito Web.

    Verrà visualizzata la finestra di dialogo Nuovo sito Web.

  3. In Modelli Visual Studio installati fare clic su Sito Web ASP.NET.

  4. Nella casella Percorso, digitare il nome della cartella in cui salvare le pagine del sito Web.

    Ad esempio, digitare il nome di cartella C:\WebSites.

  5. Nell'elenco Linguaggio selezionare il linguaggio di programmazione da utilizzare.

  6. Scegliere OK.

  7. La cartella viene creata insieme a una nuova pagina chiamata Default.aspx.

Configurazione della memorizzazione nella cache a livello di pagina

In questa procedura viene descritta la memorizzazione di base della pagina nella cache. Un controllo Label viene aggiunto alla pagina in cui è visualizzata la relativa data di creazione e, successivamente, la pagina viene configurata per la memorizzazione nella cache. La data di creazione della pagina consente di visualizzare che la richiesta della pagina è soddisfatta dalla cache.

Per configurare la memorizzazione nella cache a livello di pagina

  1. Aprire la pagina Default.aspx oppure passare a questa pagina. In alternativa, è possibile utilizzare una delle pagine presenti nel sito Web.

  2. Passare alla visualizzazione Progettazione.

  3. Dal gruppo Standard della Casella degli strumenti, trascinare un controllo Label nella pagina, lasciando il nome di Label1.

  4. Fare doppio clic su una parte vuota della pagina.

    La finestra di progettazione viene passata all'editor di codice e si crea un metodo Page_Load.

  5. Aggiungere il codice evidenziato riportato di seguito al metodo.

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs)
         Label1.Text = System.DateTime.Now.ToString()
    End Sub
    
    protected void Page_Load(Object sender, System.EventArgs e)
    {
         Label1.Text = System.DateTime.Now.ToString();
    }
    
  6. Premere CTRL+F5 per eseguire la pagina.

    Quando la pagina viene visualizzata nel browser, verranno visualizzate anche la data e l'ora correnti. Premendo il pulsante di aggiornamento del browser il timestamp cambia ogni volta.

  7. Chiudere il browser.

  8. Aggiungere le seguenti istruzioni @ OutputCache all'inizio della pagina:

    <%@ OutputCache Duration="15" VaryByParam="none" %>
    

    In queste istruzioni è configurata la pagina da memorizzare nella cache. Nell'attributo Duration si specifica che la pagina resterà nella cache per 15 secondi.

  9. Premere CTRL+F5 per eseguire di nuovo la pagina.

  10. Aggiornare la pagina più volte.

    Notare che la visualizzazione dell'ora è aggiornata soltanto ogni 15 secondi, a prescindere dal numero di volte in cui si aggiorna il browser, dal momento che la richiesta viene soddisfatta dalla cache soltanto per questa durata, dopo di che il codice della pagina viene eseguito di nuovo.

Impostazione della memorizzazione nella cache a livello di applicazione

Nella procedura precedente, è stata configurata la memorizzazione nella cache di una pagina singola. In alcuni casi, è necessario configurare la memorizzazione nella cache per tutte le pagine presenti nel sito Web. Inoltre, potrebbe essere necessario stabilire regole diverse per la memorizzazione nella cache (profili) e applicare i profili della cache a insiemi di pagine singole. L'impostazione della memorizzazione nella cache a livello di applicazione consente di modificare il comportamento della cache da un file di configurazione singolo invece di modificare la direttiva @ OutputCache di pagine singole. Nella procedura riportata di seguito, sarà impostato un profilo di cache semplice da utilizzare per la pagina attualmente in uso.

Per configurare la memorizzazione nella cache a livello di applicazione

  1. Se è già presente un file Web.config, portarsi al passaggio 4.

  2. In Esplora soluzioni, fare clic con il pulsante destro del mouse sul nome del sito Web e scegliere Aggiungi nuovo elemento.

  3. Nella finestra di dialogo Aggiungi elemento, fare clic su File di configurazione Web, quindi su Aggiungi.

    Accertarsi di utilizzare il nome Web.config.

  4. Aggiungere l'XML riportato di seguito come figlio dell'elemento system.web.

    <!-- caching section group -->
    <caching>
    <outputCacheSettings>
        <outputCacheProfiles>
            <add name="AppCache1" enabled="true" duration="60"/>
        </outputCacheProfiles>
    </outputCacheSettings>
    </caching>
    
  5. Salvare e chiudere il file.

  6. Passare alla pagina Web in uso oppure aprirla, quindi passare a visualizzazione Origine.

  7. Modificare la direttiva @ OutputCache per leggere come segue:

    <%@ OutputCache CacheProfile="AppCache1" VaryByParam="none" %>
    
  8. Premere CTRL+F5 per eseguire la pagina.

  9. Aggiornare la pagina per un certo numero di volte.

    La data resterà tale per la durata specificata nel profilo della cache, che è di 60 secondi.

Memorizzazione nella cache dell'utilizzo dei parametri

Nella direttiva @ OutputCache si richiede di impostare l'attributo VaryByParam che, fino ad adesso, deve essere impostato su "none". L'attributo VaryByParam consente di configurare la memorizzazione nella cache in modo che in ASP.NET siano memorizzate diverse versioni di una pagina in base a parametri quali le stringhe, i valori di invio dei form, le intestazioni di richiesta e così via.

Ad esempio, è possibile utilizzare i parametri della cache in una pagina in cui sono visualizzate le condizioni metereologiche delle città selezionate, dove i dati metereologici sono aggiornati soltanto ogni tre ore. In questo scenario, è necessario memorizzare nella cache una versione separata della pagina per ciascuna città. È possibile eseguire tale procedura impostando il parametro della cache per variare in base al parametro di una stringa di query.

Nella procedura riportata di seguito, verrà modificato il controllo Label aggiunto alla pagina per visualizzare l'ora con uno sfondo colorato. È possibile modificare il colore utilizzando un controllo TextBox per immettere il nome di un colore.

Quando si invia la pagina, il colore digitato viene inviato come dati inviati e il colore dello sfondo del controllo Label viene modificato. Quando si richiede un nuovo colore (e nella pagina sono inclusi nuovi dati inviati), la pagina viene rigenerata e il timestamp aggiornato. Tuttavia, le richieste successive relative allo stesso colore risulteranno nella pagina memorizzata nella cache restituita (fino all'intervallo di tempo in eccesso).

Per eseguire la memorizzazione nella cache in base ai parametri

  1. Passare alla pagina in uso oppure aprirla.

  2. Passare alla visualizzazione Progettazione.

  3. Dal gruppo Standard della casella degli strumenti, trascinare un controllo TextBox nella pagina e impostarne l'ID su Color.

  4. Trascinare un controllo Button nella pagina lasciando il nome predefinito di Button1.

  5. Impostare la proprietà Text del controllo Button su "Cambia colore".

    Fare doppio clic sul controllo Button per creare un gestore eventi Click.

  6. Nel metodo, aggiungere il codice evidenziato riportato di seguito.

    Protected Sub Button1_Click(ByVal sender As Object, _ 
            ByVal e As System.EventArgs) Handles Button1.Click
        Label1.BackColor = _        System.Drawing.Color.FromName(Server.HtmlEncode(Color.Text))
    End Sub
    
    protected void Button1_Click(Object sender, System.EventArgs e)
    {
        Label1.BackColor =         System.Drawing.Color.FromName(Server.HtmlEncode(Color.Text));
    }
    
  7. Impostare l'attributo defaultbutton dell'elemento form su "Button1".

    In tal modo il gestore eventi Click per il pulsante verrà richiamato quando viene premuto INVIO.

  8. Sostituire la direttiva @ OutputCache con la versione riportata di seguito.

    <%@ OutputCache Location="Server" Duration="60" VaryByParam="Color" %>
    
  9. Premere CTRL+F5 per eseguire la pagina.

  10. Digitare il nome di un colore, ad esempio "red" o "blue", nella casella di testo, quindi fare clic su Cambia colore.

    In ASP.NET viene memorizzata nella cache una versione della pagina in cui si utilizza il colore specificato.

  11. Aggiornare la pagina per un certo numero di volte.

    Se non si digita un nome di colore nuovo, la data e l'ora non saranno modificate per almeno un minuto, come specificato dall'attributo Duration nella direttiva @ OutputCache.

  12. Immettere un nuovo colore, ad esempio "green" o "orchid", quindi inviare la pagina.

    Insieme al nuovo colore sarà visualizzato l'aggiornamento dell'ora.

Passaggi successivi

In questa procedura dettagliata sono stati illustrati i concetti di base sulla memorizzazione nella cache di pagine ASP.NET. È inoltre possibile esaminare ulteriori tecniche di memorizzazione nella cache.

Vedere anche

Attività

Procedura dettagliata: utilizzo della memorizzazione nella cache di output di ASP.NET con SQL Server

Concetti

Cenni preliminari sull'inserimento nella cache in ASP.NET

Riferimenti

@ OutputCache

HttpCachePolicy

VaryByParams