Condividi tramite


Procedura dettagliata: Memorizzazione nella cache dell'output di IIS 7.0

di Saad Ladki

Il contenuto Web può essere suddiviso in due categorie: contenuto statico e contenuto dinamico. Il contenuto statico non cambia da richiesta a richiesta. Il contenuto restituito al Web browser è sempre lo stesso. Esempi di contenuto statico includono file HTML, JPG o GIF.

L'altro è contenuto dinamico. Si tratta della risposta generata per le modifiche al contenuto dinamico con ogni richiesta. Gli esempi includono ASP.NET o il contenuto PHP.

Esiste un'ampia gamma tra queste due categorie che include contenuto semi-dinamico. Si immagini una pagina ASP.NET dinamica che esegue una query di database. Non esiste alcun motivo per eseguire questa query su ogni richiesta se le tabelle di database sottostanti cambiano raramente.

La funzionalità di memorizzazione nella cache dell'output IIS è destinata al contenuto semi-dinamico. Consente di memorizzare nella cache le risposte statiche per le richieste dinamiche e di ottenere una scalabilità enorme.

Prerequisiti

Per questa procedura dettagliata, è necessario IIS 7.0 o versione successiva in Windows® Vista SP1 o in Windows Server® 2008 Beta 3 o versione successiva. Questa procedura dettagliata usa anche ASP.NET 2.0 che deve essere installato come componente facoltativo nel programma di installazione di IIS.

Panoramica della procedura dettagliata

Nella procedura dettagliata seguente si usano le interfacce di estendibilità IIS per aggiungere messaggi di copyright specifici della lingua ai file JPG.

Prima di tutto, si aggiunge un gestore gestito. L'inserimento dinamico di un messaggio di copyright in ogni file JPG comporta tuttavia un costo, perché ora il codice gestito deve essere eseguito per ogni file JPG.

Successivamente, si installa WCAT, uno strumento di analisi delle prestazioni IIS, per misurare la velocità effettiva del gestore di copyright JPG.

Aggiungiamo quindi la memorizzazione nella cache di output per ottenere un calo delle prestazioni incorrere nell'aggiunta del gestore del copyright.

  1. Creare una directory denominata 'pictures' nella %systemroot%\inetpub\wwwroot directory . Eseguire il comando seguente in una shell dei comandi con privilegi elevati:

    md %systemdrive%\inetpub\wwwroot\pictures
    
  2. Copiare alcune immagini digitali, questa procedura dettagliata presuppone che siano file JPG, nella nuova directory delle immagini.

    Nota

    A causa delle impostazioni di sicurezza di Internet Explorer elevate in Windows Server 2008, è possibile che venga visualizzata una finestra di dialogo di sicurezza che indica che il sito Web è bloccato. Per scaricare lo sfondo iis, aggiungere wallpaper.iis7.org all'elenco dei siti attendibili.

  3. Creare un'applicazione con lo strumento da riga di comando appcmd.

    %windir%\system32\inetsrv\appcmd add app -site.name:"Default Web Site" 
    
        -path:/pictures -physicalPath:%systemdrive%\inetpub\wwwroot\pictures
    
  4. Creare la directory App_Code sotto la directory immagini:

    md %systemdrive%\inetpub\wwwroot\pictures\App_Code
    
  5. Aprire Blocco note e incollarvi il codice seguente.

    using System;
    using System.Web;
    using System.Drawing;
    using System.Drawing.Imaging;
              
    namespace IIS7Demos
    {
        public class imageCopyrightHandler : IHttpHandler
        {
            public void ProcessRequest(HttpContext context)
            {
                string message = "Copyright © IIS 7.0 Team";
                try            {
                    string languageHeader;
             languageHeader = context.Request.Headers["Accept-Language"].Substring(0,2).ToUpper();
                    switch (languageHeader)
                    {
                        case ("DE"):
                            message = "IIS 7.0 Team - Alle Rechte vorbehalten";
                            break;
                        case ("ES"):
                            message = "Marca Registrada IIS 7.0 Team";
                            break;
                        default:
                            break;
                    }
                }
                catch 
               { 
                    // if something fails, e.g. no Language-Accept header, we go with the english message 
               }
                InsertCopyrightMessage (   context, 
                                message, 
                                "yellow"                            
                            );
            }
            void InsertCopyrightMessage(
                                HttpContext context, 
                                string message, 
                                string color
                             )
            {
                try 
                {
                    // get physical path of request 
                    string strPath = context.Request.PhysicalPath;
                    // load as bitmap 
                    Bitmap jpgFile = new Bitmap(strPath);
                    // add copyright message 
                    Graphics g = Graphics.FromImage(jpgFile);
                    Font f = new Font("Arial", 20, GraphicsUnit.Pixel);
                    SolidBrush sb = new SolidBrush(Color.FromName(color));
                    // write copyright message to bitmap 
                    g.DrawString(   message, 
                                    f, 
                                    sb, 
                                    5, 
                                    jpgFile.Height - f.Height - 5
                                );
                    f.Dispose();
                    g.Dispose();
    
                    // save it to response stream 
                    jpgFile.Save(   context.Response.OutputStream, 
                                    System.Drawing.Imaging.ImageFormat.Jpeg
                                );
                    jpgFile.Dispose();
                }
                catch (Exception e)
                {
                    context.Response.Write(e.Message);
                }
            }
              
            public bool IsReusable
            {
                get { return true; }
            }
        }
    }
    

    Salvare il file come %systemdrive%\inetpub\wwwroot\pictures\App\_Code\imageCopyrightHandler.cs.

  6. Creare il gestore che esegue questo codice quando viene richiesto un file JPG:

    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers 
    
        /+[name='imageCopyrightHandler-Integrated',path='*.jpg',
    
        verb='GET,HEAD',type='IIS7Demos.imageCopyrightHandler',preCondition='integratedMode']
    
  7. È anche necessario abilitare l'esplorazione della directory perché non è ancora presente un documento predefinito:

    %windir%\system32\inetsrv\appcmd set config "Default Web Site/pictures" 
    
        -section:directoryBrowse -enabled:true
    
  8. Passare all'applicazione immagini digitando nella barra degli indirizzi di Internet Explorer: http://localhost/pictures. Fare clic sul collegamento al file JPG nell'elenco di directory IIS. Dovrebbe essere visualizzata l'immagine JPG con il messaggio di copyright inserito.

  9. Esaminare il codice. Si noterà che il messaggio di copyright dipende dall'intestazione "Accept-Language" inviata dal browser. Se è installata una versione tedesca di Microsoft Server 2008, viene visualizzato il messaggio di copyright "IIS 7.0 Team - Alle Rechte vorbehalten"; se si ha una versione in lingua spagnola, viene visualizzato "Marca Registrada IIS 7.0 Team". In tutti gli altri casi il messaggio di copyright sarà "Copyright © IIS 7.0 Team". Un modo per testare questo codice consiste nel modificare l'intestazione "Accept-Language" che Internet Explorer invia:

    • Aprire "Internet Explorer".
    • Aprire il menu "Strumenti" e fare clic su "Opzioni Internet".
    • Fare clic sul pulsante "Lingue".
    • Fare clic su "Aggiungi..." pulsante e aggiungere "es" per spagnolo o "de" per il tedesco.
    • Spostare la nuova lingua nella parte superiore dell'elenco tramite il pulsante "Sposta su".
    • Passa a http://localhost/pictures/<your_jpg_file>.jpg. Il messaggio Copyright è stato modificato nella lingua configurata.
    • Non dimenticare di tornare alla finestra di dialogo "Lingue" e reimpostare. In caso contrario, ci si potrebbe chiedere in seguito perché si ottengono pagine Web spagnole o tedesche.

Parte II - Test delle prestazioni di imageCopyrightHandler

Una volta che il gestore di copyright JPG funziona, dobbiamo determinare quanto è veloce il nostro codice. Installare uno strumento Resource Kit IIS 6.0 per eseguire test delle prestazioni:

  1. Scaricare gli strumenti di Resource Kit di IIS 6.0 e installarli. Eseguire un'installazione personalizzata e installare solo lo strumento WCAT (Web Capacity Analysis Tool). WCAT è l'unica funzionalità degli strumenti di Resource Kit IIS 6.0 necessari per eseguire i test delle prestazioni.

    Nota

    A causa delle impostazioni di sicurezza di Internet Explorer elevate in Windows Server 2008, è possibile che venga visualizzata una finestra di dialogo di sicurezza che indica che il sito Web è bloccato. Per scaricare il Resource Kit di IIS 6.0, aggiungere *.microsoft.com all'elenco dei siti attendibili.

  2. Creare una directory denominata PERFTEST, ad esempio:

    md %systemdrive%\perftest
    
  3. Il controller WCAT richiede tre file di input:

    • File di script che indica a WCAT quali URL richiedere. Ogni URL ottiene un ID classe univoco
    • Un file di distribuzione che indica a WCAT come le richieste devono essere distribuite tra gli URL specificati nel file di script
    • File di configurazione che configura i parametri di una determinata esecuzione delle prestazioni, ad esempio la durata dei test, il numero di client HTTP da simulare e così via.

    The Script File

    Creare un nuovo file denominato script.cfg nella directory perftest e incollarvi il contenuto seguente:

    NEW TRANSACTION
        classId = 1
        NEW REQUEST HTTP
            Verb = "GET"
            URL = "http://localhost/pictures/<your image name>.JPG"
    NEW TRANSACTION
        classId = 2
        NEW REQUEST HTTP
            Verb = "GET"
            URL = "http://localhost/pictures/<your image name>.JPG"
    

    Nota

    Sostituire la <voce del nome> dell'immagine con i nomi dei file JPG. Se si dispone di altri file JPG, è possibile aggiungere una nuova transazione. Assicurarsi di assegnare a ogni transazione un nuovo ClassID.

    File di distribuzione

    Il file di distribuzione indica a WCAT come deve pesare le richieste. Con i due URL precedenti, viene eseguita una distribuzione pari a 50/50. Ogni ClassID viene richiesto il 50% del tempo.

    Creare un file denominato %systemdrive%\perftest\distribution.cfg nella directory perftest e incollarvi il contenuto seguente:

    1 50
    2 50
    

    File di configurazione

    Ecco i parametri consigliati per il test:

    • Durata: 30 secondi
    • Riscaldamento: 5 secondi
    • Raffreddamento: 5 secondi
    • Client HTTP simulati: 20

    Creare un file denominato config.cfg nella directory perftest e incollarvi il contenuto seguente:

    Warmuptime 5s
    Duration 30s
    CooldownTime 5s
    NumClientMachines 1
    NumClientThreads 20
    
  4. Avviare il controller eseguendo i comandi seguenti:

    Cd \perftest
    "%programfiles%\IIS Resources\WCAT Controller\wcctl" 
        -c config.cfg -s script.cfg -d distribution.cfg -a localhost
    

    Non appena tutti i client sono connessi, verrà avviato il test delle prestazioni.

  5. Poiché è disponibile un solo client, aprire un'altra shell dei comandi con privilegi elevati ed eseguire quanto segue:

    "%programfiles%\IIS Resources\WCAT Client\wcclient.exe" localhost
    

    A tale scopo, impostare NumClientMachines in config.cfg su un numero maggiore e connettere i client al controller tramite il comando wcclient specificando il nome del computer controller.

    Esempio: wcclient MyPerfTestControllerMachine

    Nota

    Se si esegue questa operazione in una versione a 64 bit di Windows, WCAT viene installato nella directory "programmi (x86)" ed è necessario usare %programfiles(x86)% per avviare WCAT.

  6. Ecco i risultati della prima esecuzione:

    ########################################################################
    WCAT Performance Statistics_________________________________
    Server                      :      localhost      ()
    #Transactions               :              3      (HTTP/1.1)
    Total Async Sockets         :             20      (5 WCAT Pool Threads)
    Total Elapsed Time          :             30 Secs (0 Hrs,0 Mins,30 Secs)
    Current Connections         :             20
    Total Connection Attempts   :            436      (   14/Sec)
    Total Connect Errors        :              0      (    0/Sec)
    Total Success Connections   :            436      (   14/Sec)
    Total Consec. Connect Errors:              0      (    0/Sec)
    Total Bytes                 :       32301100      ( 1051 KB/Sec)
    Total Bytes Written         :          32264      (    1 KB/Sec)
    Total Bytes Read            :       32268836      ( 1050 KB/Sec)
    Total Requests              :            436      (   14/Sec)
    Total Responses             :            436      (   14/Sec)
    Total Socket Reads          :           6976      (  232/Sec)
    Total Socket Writes         :            436      (   14/Sec)
    Total Parse Errors          :              0      (    0/Sec)
    Total Socket Errors         :              0      (    0/Sec)
    Total I/O Errors            :              0      (    0/Sec)
    Total Internal Errors       :              0      (    0/Sec)
    Total Time Outs             :              0      (    0/Sec)
    Total 200 OK                :            436      (   14/Sec)
    Total 30X Redirect          :              0      (    0/Sec)
    Total 304 Not Modified      :              0      (    0/Sec)
    Total 404 Not Found         :              0      (    0/Sec)
    Total 500 Server Error      :              0      (    0/Sec)
    Total Bad Status            :              0      (    0/Sec)
    Min. Connect Time           :              0 MS
    Avg. Connect Time           :              0 MS
    Max. Connect Time           :             16 MS
    Min. Resp Time (1st Byte)   :           1281 MS
    Avg. Resp Time (1st Byte)   :           1371 MS
    Max. Resp Time (1st Byte)   :           1578 MS
    Min. Response Time (Last)   :           1281 MS
    Avg. Response Time (Last)   :           1373 MS
    Max. Response Time (Last)   :           1578 MS
    Current Outstanding Connects:              0      (   20 Max)
    Current Waitable Connects   :              0      (   20 Max)
    Total Asynchronous Connects :            531      (    1/Sec)
    Total Discarded Connects    :              0      (    0/Sec)
    ########################################################################
    

    Il numero importante da esaminare è rappresentato dalle richieste al secondo. In questo caso, si ottengono 14 richieste al secondo.

    Una parola di cautela - più grandi i tuoi file JPG, meno richieste vedrete. È probabile che il computer sia associato alla rete: IIS non sarà in grado di gestire più richieste perché la rete è satura con i dati inviati. I risultati migliori con i file JPG sono visualizzati nell'intervallo da 200 a 300 KB.

Aggiunta della memorizzazione nella cache dell'output

Il codice per inserire dinamicamente il messaggio di copyright è piuttosto lento. Quattordici richieste al secondo non sono veloci per un server Web. IIS offre prestazioni molto migliori. È necessario creare un criterio di memorizzazione nella cache che inserisce gli URL con l'estensione JPG nella cache in modalità kernel. Ecco come aggiungere i criteri di cache:

Aggiunta di criteri di cache tramite lo strumento di gestione IIS

  1. Passare a "Strumenti Amministrazione istrative" e selezionare "Gestione Internet Information Services (IIS).
  2. Usare la visualizzazione albero sul lato sinistro per passare all'applicazione "immagini".
  3. Selezionare la voce di menu "Regole di memorizzazione nella cache output".
  4. Fare clic su "Aggiungi..." nel menu "Azioni".
  5. Aggiungere JPG come "Estensione file" nella cache.
  6. Selezionare "A intervalli di tempo" nella sezione "Monitorare i file memorizzati nella cache" e immettere 00:00:10 come intervallo di tempo.
  7. Selezionare la casella di controllo "Intestazioni" e immettere "Accept-Language".

Nota

L'interfaccia utente della cache di output non è disponibile nelle versioni precedenti a Windows Vista Service Pack 1.

Aggiunta di criteri di cache tramite la riga di comando

Per eseguire la stessa procedura con lo strumento appcmd, immettere il comando seguente:

%windir%\system32\inetsrv\appcmd set config "Default Web Site/pictures" 
    -section:caching /+profiles.[extension='.jpg',duration='00:00:10',
    policy='CacheForTimePeriod',varyByHeaders='Accept-Language']

Ripetere l'esecuzione delle prestazioni per vedere cosa e come cambiano le impostazioni di configurazione.

  1. Avviare il controller eseguendo i comandi seguenti:

    Cd \perftest
    "%programfiles%\IIS Resources\WCAT Controller\wcctl" 
        -c config.cfg -s script.cfg -d distribution.cfg -a localhost
    
  2. Avviare il client con:

    "%programfiles%\IIS Resources\WCAT Client\wcclient.exe" localhost
    

    Nota

    Se si esegue questa operazione in una versione a 64 bit di Windows, WCAT viene installato nella program files (x86) directory ed è necessario usare %programfiles(x86)% per avviare WCAT.

Output di esempio

########################################################################
WCAT Performance Statistics_________________________________
Server                      :      localhost      ()
#Transactions               :              3      (HTTP/1.1)
Total Async Sockets         :             20      (5 WCAT Pool Threads)
Total Elapsed Time          :             30 Secs (0 Hrs,0 Mins,30 Secs)
Current Connections         :             19
Total Connection Attempts   :          13020      (  434/Sec)
Total Connect Errors        :              0      (    0/Sec)
Total Success Connections   :          13019      (  433/Sec)
Total Consec. Connect Errors:              0      (    0/Sec)
Total Bytes                 :      958045737      (31186 KB/Sec)
Total Bytes Written         :         963406      (   31 KB/Sec)
Total Bytes Read            :      957082331      (31155 KB/Sec)
Total Requests              :          13019      (  433/Sec)
Total Responses             :          13019      (  433/Sec)
Total Socket Reads          :         258283      ( 8609/Sec)
Total Socket Writes         :          13019      (  433/Sec)
Total Parse Errors          :              0      (    0/Sec)
Total Socket Errors         :              0      (    0/Sec)
Total I/O Errors            :              0      (    0/Sec)
Total Internal Errors       :              0      (    0/Sec)
Total Time Outs             :              0      (    0/Sec)
Total 200 OK                :          13019      (  433/Sec)
Total 30X Redirect          :              0      (    0/Sec)
Total 304 Not Modified      :              0      (    0/Sec)
Total 404 Not Found         :              0      (    0/Sec)
Total 500 Server Error      :              0      (    0/Sec)
Total Bad Status            :              0      (    0/Sec)
Min. Connect Time           :              0 MS
Avg. Connect Time           :              0 MS
Max. Connect Time           :             63 MS
Min. Resp Time (1st Byte)   :              0 MS
Avg. Resp Time (1st Byte)   :             33 MS
Max. Resp Time (1st Byte)   :            125 MS
Min. Response Time (Last)   :              0 MS
Avg. Response Time (Last)   :             45 MS
Max. Response Time (Last)   :            141 MS
Current Outstanding Connects:              0      (   20 Max)
Current Waitable Connects   :              0      (   20 Max)
Total Asynchronous Connects :          14093      (  147/Sec)
Total Discarded Connects    :              0      (    0/Sec)
########################################################################

Argomenti avanzati relativi alla memorizzazione nella cache dell'output

Contatori delle prestazioni

Per verificare le prestazioni nella cache di output, esaminare i contatori della cache di output in "Affidabilità e Monitor prestazioni". Ci sono molti contatori interessanti. Di seguito è riportato un esempio di come usare "Affidabilità e Monitor prestazioni" insieme alla cache di output.

  1. In Windows Server 2008 avviare PERFMON tramite il menu Start. Passare a "strumenti Amministrazione istrativi" e fare clic su "Affidabilità e Monitor prestazioni". In Vista si trova "strumenti Amministrazione istrative" nella Pannello di controllo.
  2. Selezionare "Monitor prestazioni" nella visualizzazione albero a destra e fare clic sul grande segno "+" sulla barra degli strumenti.
  3. Passare al contatore "Cache del servizio Web" e fare clic su di esso per aprirlo.
  4. Aggiungere il contatore "Totale URI memorizzati nella cache".
  5. Eseguire di nuovo il test WCAT.

Si noterà che il numero di URI memorizzati nella cache aumenta a seconda del numero di elementi richiesti durante il test delle prestazioni.

Regole di memorizzazione nella cache in modalità kernel IIS

La cache di output iis supporta due criteri di cache. I criteri normali della cache di output sfruttano una cache che risiede in un processo di lavoro IIS. Gli altri criteri della cache sono criteri di cache in modalità kernel, nel qual caso la cache risiede in HTTP.SYS, un driver in modalità kernel.

La memorizzazione nella cache del contenuto in modalità kernel consente al sito Web di passare più velocemente. Modificare la configurazione dell'applicazione immagini per usare la cache in modalità kernel. Ecco l'aspetto della configurazione corrente (%systemdrive%\inetpub\wwwroot\pictures\web.config):

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <directoryBrowse enabled="true" />
        <caching>
            <profiles>
                <add extension=".jpg" policy="CacheForTimePeriod" 
                duration="00:00:10" varyByHeaders="Accept-Language" />
            </profiles>
        </caching>                  
  </system.webServer>
</configuration>

Ora modificarlo per usare la memorizzazione nella cache in modalità kernel:

  1. %systemdrive%\inetpub\wwwroot\pictures\web.config aperti.

  2. Modificare l'impostazione.

    <caching>
        <profiles>
            <add extension=".jpg" policy="CacheForTimePeriod" 
                    duration="00:00:10" varyByHeaders="Accept-Language" />
        </profiles>
    </caching>
    

    in:

    <caching>
        <profiles>
                <add extension=".jpg" kernelCachePolicy="CacheForTimePeriod" 
            duration="00:00:10" />
            </profiles>
    </caching>
    

Si noterà che non viene più usato l'attributo varyByHeaders. Questo perché kernelModeCache non supporta alcune delle funzionalità supportate dalla cache di output in modalità utente.

Limitazioni della cache di output in modalità kernel

Esistono due differenze significative tra la modalità utente e la cache di output in modalità kernel.

  • La cache di output in modalità kernel non supporta moduli e funzionalità che devono essere eseguiti in modalità utente, ad esempio l'autenticazione o l'autorizzazione. Esempio: se gli schemi di autenticazione come Basic o autenticazione di Windows sono abilitati, i criteri della cache non funzioneranno. Il contenuto viene fornito ma non memorizzato nella cache. Vedere "Risoluzione dei problemi di memorizzazione nella cache" su come scoprire se il contenuto viene memorizzato nella cache. Altre informazioni sui motivi per cui le risposte potrebbero non essere memorizzate nella cache in modalità kernel sono disponibili in questo articolo della Knowledge Base.
  • La cache di output in modalità kernel supporta l'attributo varyByHeaders, ma non varyByQuerystring.

Risolvere i problemi di memorizzazione nella cache

Il buffer eventi di richiesta non riuscita (FREB) è il modo migliore per determinare se la richiesta viene memorizzata nella cache. FREB indica perché qualcosa non viene memorizzato nella cache. Di seguito è riportato un esempio di log FREB. In questo caso, l'evento HTTPSYS_CACHEABLE indica che la richiesta non viene memorizzata nella cache perché la cache in modalità kernel non è abilitata.

Per informazioni più dettagliate su come usare FREB, vedere Risoluzione dei problemi relativi alle richieste non riuscite tramite la traccia in IIS 7.

Usare il comando seguente per individuare il contenuto memorizzato nella cache in modalità kernel:

netsh http show cachestate

Memorizzazione nella cache di complessità

Anche se si abilita la memorizzazione nella cache di output, IIS non memorizza immediatamente nella cache una richiesta. È necessario richiedere alcune volte prima che IIS consideri "cache degna". La validità della cache può essere configurata tramite la sezione ServerRuntime descritta in questo articolo msdn.

Le due proprietà che determinano la validità della cache sono frequentiHitTimePeriod e frequentHitThreshold. Una richiesta viene memorizzata nella cache solo se vengono inviate più richieste <frequentHitThreshold> di un URL memorizzabile nella cache all'interno di <frequentHitTimePeriod>.

L'impostazione predefinita per frequentHitTimePeriod è di 10 secondi.

L'impostazione predefinita per frequentHitThreshold è 2.

Nell'esempio precedente vengono inseriti tutti i file con estensione JPG nella cache di output. Questo non funziona sempre perché a volte si vuole essere più selettivi e inserire un particolare documento nella cache di output. Ecco come eseguire questa operazione con la pagina richiesta più frequentemente, il documento predefinito:

  1. Creare un file denominato default.aspx nella %systemdrive%\inetpub\wwwroot\pictures directory e aggiungere il codice seguente:

    <%=DateTime.Now%>
    
  2. Passare a "Strumenti Amministrazione istrative" e selezionare "Gestione Internet Information Services (IIS).

  3. Usare la visualizzazione albero sul lato sinistro per passare all'applicazione "immagini".

  4. Fare clic su "Visualizzazione contenuto" nella parte inferiore della pagina.

  5. Selezionare il documento predefinito, ad esempio default.aspx pagina.

  6. Fare clic su "Passa alla visualizzazione funzionalità" nel menu "Azioni" a destra. Ogni impostazione configurata verrà ora applicata solo al documento predefinito.

  7. Aprire l'impostazione "Regole di memorizzazione nella cache dell'output".

  8. Aggiungere ".aspx" come estensione di file.

  9. Selezionare "memorizzazione nella cache in modalità kernel", quindi è possibile selezionare "A intervalli di tempo" e abilitare "Monitorare i file memorizzati nella cache" e immettere 00:00:30 come intervallo di tempo.

  10. Passare a http://localhost/pictures con "Internet Explorer". Aggiornando costantemente la pagina (premere CTRL+F5 per assicurarsi che non provengano dalla cache del browser), si noterà che il tempo non cambierà per 30 secondi.

Riepilogo

L'uso della funzionalità Cache di output IIS per il contenuto semi-dinamico può migliorare il sito Web. Si noterà un miglioramento sostanziale delle prestazioni e della capacità di velocità effettiva. Una semplice modifica della configurazione è sufficiente per sfruttare questa funzionalità.