Procédure pas à pas : Mise en cache de sortie IIS 7.0

par Saad Ladki

Le contenu web peut être divisé en deux catégories : le contenu statique et le contenu dynamique. Le contenu statique ne passe pas de la requête à la requête. Le contenu retourné au navigateur web est toujours le même. Les exemples de contenu statique incluent des fichiers HTML, JPG ou GIF.

L’autre est du contenu dynamique. Il s’agit de la réponse générée pour les modifications de contenu dynamique avec chaque requête. Les exemples incluent ASP.NET ou le contenu PHP.

Il existe une grande plage entre ces deux catégories qui incluent du contenu semi-dynamique. Imaginez une page de ASP.NET dynamique qui exécute une requête de base de données. Il n’existe aucune raison d’exécuter cette requête sur chaque requête si les tables de base de données sous-jacentes changent rarement.

La fonctionnalité IIS Output Caching cible le contenu semi-dynamique. Il vous permet de mettre en cache des réponses statiques pour les requêtes dynamiques et d’obtenir une extensibilité considérable.

Prérequis

Pour cette procédure pas à pas, vous avez besoin d’IIS 7.0 ou version ultérieure sur Windows® Vista SP1 ou sur Windows Server® 2008 Beta 3 ou version ultérieure. Cette procédure pas à pas utilise également ASP.NET 2.0 qui doit être installé en tant que composant facultatif dans le programme d’installation IIS.

Vue d’ensemble de la procédure pas à pas

Dans la procédure pas à pas suivante, nous utilisons les interfaces d’extensibilité IIS pour ajouter des messages de copyright spécifiques au langage aux fichiers JPG.

Tout d’abord, nous faisons cela en ajoutant un gestionnaire managé. L’insertion dynamique d’un message de copyright dans chaque fichier JPG est fournie avec un coût, car le code managé doit maintenant être exécuté pour chaque fichier JPG.

Ensuite, nous installons WCAT, un outil d’analyse des performances IIS, pour mesurer le débit de notre gestionnaire de droits d’auteur JPG.

Ensuite, nous ajoutons la mise en cache de sortie pour récupérer la dégradation des performances engendrée par l’ajout de notre gestionnaire de droits d’auteur.

  1. Créez un répertoire appelé « images » sous le répertoire %systemroot%\inetpub\wwwroot. Exécutez la commande suivante dans un interpréteur de commandes avec élévation de privilèges :

    md %systemdrive%\inetpub\wwwroot\pictures
    
  2. Copiez certaines images numériques ( cette procédure pas à pas suppose qu’elles sont des fichiers JPG) dans le nouveau répertoire d’images.

    Remarque

    En raison des paramètres de sécurité Internet Explorer élevés sur Windows Server 2008, vous pouvez obtenir une boîte de dialogue de sécurité vous indiquant que le site web est bloqué. Pour télécharger le papier peint IIS, ajoutez wallpaper.iis7.org à la liste des sites approuvés.

  3. Créez une application avec l’outil en ligne de commande appcmd.

    %windir%\system32\inetsrv\appcmd add app -site.name:"Default Web Site" 
    
        -path:/pictures -physicalPath:%systemdrive%\inetpub\wwwroot\pictures
    
  4. Créez le répertoire App_Code sous le répertoire images :

    md %systemdrive%\inetpub\wwwroot\pictures\App_Code
    
  5. Ouvrez le Bloc-notes et collez-y le code suivant.

    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; }
            }
        }
    }
    

    Enregistrez le fichier sous le nom %systemdrive%\inetpub\wwwroot\pictures\App\_Code\imageCopyrightHandler.cs.

  6. Créez le gestionnaire qui exécute ce code lorsqu'un fichier JPG est demandé :

    %windir%\system32\inetsrv\appcmd set config /section:system.webServer/handlers 
    
        /+[name='imageCopyrightHandler-Integrated',path='*.jpg',
    
        verb='GET,HEAD',type='IIS7Demos.imageCopyrightHandler',preCondition='integratedMode']
    
  7. Il faut également activer la navigation dans les répertoires car il n'y a pas encore de document par défaut :

    %windir%\system32\inetsrv\appcmd set config "Default Web Site/pictures" 
    
        -section:directoryBrowse -enabled:true
    
  8. Accédez à l'application Images en tapant dans la barre d'adresse d'Internet Explorer : http://localhost/pictures. Cliquez sur le lien vers votre fichier JPG dans la liste du répertoire IIS. Vous devriez voir l'image JPG avec le message de droit d'auteur inséré.

  9. Regardez le code. Vous voyez que le message de droit d'auteur dépend de l'en-tête "Accept-Language" envoyé par le navigateur. Si une version allemande de Microsoft Server 2008 est installée, vous voyez le message de copyright « IIS 7.0 Team - Alle Rechte vorbehalten » ; si vous disposez d'une version en espagnol, vous voyez « Marca Registrada IIS 7.0 Team ». Dans tous les autres cas, le message de copyright sera "Copyright © IIS 7.0 Team". Une façon de tester ce code consiste à modifier l'en-tête "Accept-Language" envoyé par Internet Explorer :

    • Ouvrez « Internet Explorer ».
    • Ouvrez le menu « Outils », puis cliquez sur « Options Internet ».
    • Cliquez sur le bouton « Langues ».
    • Cliquez sur le bouton « Ajouter… » et ajoutez « es » pour l’espagnol ou « de » pour l’allemand.
    • Déplacez la nouvelle langue en haut de la liste via le bouton « Monter ».
    • Accédez à http://localhost/pictures/<your_jpg_file>.jpg. Le message de copyright a été remplacé par la langue que vous avez configurée.
    • N'oubliez pas de revenir dans la boîte de dialogue "Langues" et de réinitialiser-- sinon vous pourriez vous demander plus tard pourquoi vous obtenez des pages Web en espagnol ou en allemand.

Partie II - Test de performances de l’imageCopyrightHandler

Une fois que le gestionnaire de droits d’auteur JPG fonctionne, nous devons déterminer la rapidité de notre code. Installez un outil de kit de ressources IIS 6.0 pour exécuter des tests de performances :

  1. Téléchargez les outils du kit de ressources IIS 6.0 et installez-les. Effectuez une installation personnalisée et installez uniquement l'outil d'analyse de la capacité Web (WCAT). WCAT est la seule fonctionnalité des outils du kit de ressources IIS 6.0 dont nous avons besoin pour effectuer nos tests de performances.

    Remarque

    En raison des paramètres de sécurité élevés d'Internet Explorer sur Windows Server 2008, vous pourriez recevoir une boîte de dialogue de sécurité vous indiquant que le site Web est bloqué. Pour télécharger le Kit de ressources IIS 6.0, ajoutez *.microsoft.com à la liste des sites approuvés.

  2. Créez un répertoire appelé PERFTEST, par exemple :

    md %systemdrive%\perftest
    
  3. Le contrôleur WCAT nécessite trois fichiers d’entrée :

    • Fichier de script qui indique à WCAT quelles URL demander. Chaque URL obtient un ClassID unique
    • Un fichier de distribution qui indique à WCAT comment les requêtes doivent être distribuées sur les URL spécifiées dans le fichier de script
    • Un fichier de configuration qui configure les paramètres d'une exécution de performances particulière, par exemple la durée des tests, le nombre de clients HTTP à simuler, etc.

    Le fichier de script

    Créez un fichier appelé script.cfg dans le répertoire le plus perftest et collez-y le contenu suivant :

    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"
    

    Remarque

    Remplacez le <votre nom d’image> entrée par les noms de vos fichiers JPG. Si vous avez plus de fichiers JPG, vous pouvez ajouter une nouvelle transaction. Veillez à donner à chaque transaction un nouvel ID de classe.

    Le fichier de distribution

    Le fichier de distribution indique à WCAT comment il doit peser les demandes. Avec les deux URL ci-dessus, nous effectuons une distribution égale à 50/50. Chaque ClassID obtient 50 % du temps demandé.

    Créez un fichier appelé %systemdrive%\perftest\distribution.cfg dans le répertoire le plus perftest et collez le contenu suivant :

    1 50
    2 50
    

    Le fichier de configuration

    Voici les paramètres recommandés pour le test :

    • Durée : 30 secondes
    • Chaud : 5 secondes
    • Refroidissement : 5 secondes
    • Clients Http simulés : 20

    Créez un fichier appelé config.cfg dans le répertoire perftest et collez-y le contenu suivant :

    Warmuptime 5s
    Duration 30s
    CooldownTime 5s
    NumClientMachines 1
    NumClientThreads 20
    
  4. Démarrez le contrôleur en exécutant les commandes suivantes :

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

    Dès que tous les clients sont connectés, le test de performances démarre.

  5. Étant donné que nous n'avons qu'un seul client, ouvrez un autre shell de commande élevé et exécutez ce qui suit :

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

    Pour ce faire avec plus de clients, définissez NumClientMachines dans config.cfg sur un nombre plus élevé et connectez les clients au contrôleur via la commande wcclient en spécifiant le nom de la machine du contrôleur.

    Exemple : wcclient MyPerfTestControllerMachine

    Remarque

    Si vous faites cela sur une version 64 bits de Windows, WCAT est installé dans le répertoire « program files (x86) » et vous devez l'utiliser %programfiles(x86)% pour démarrer WCAT.

  6. Voici les résultats de la première exécution :

    ########################################################################
    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)
    ########################################################################
    

    Le nombre important à examiner est les demandes par seconde. Dans ce cas, nous obtenons 14 demandes par seconde.

    Un mot de prudence : plus vos fichiers JPG sont volumineux, moins de demandes s’affichent. Il est probable que votre ordinateur soit connecté au réseau : IIS ne sera pas en mesure de gérer davantage de requêtes car le réseau est saturé des données que vous envoyez. Vous voyez les meilleurs résultats avec les fichiers JPG dans la plage de 200 à 300 Ko.

Ajout de la mise en cache de sortie

Le code permettant d’insérer dynamiquement le message de copyright est assez lent. Quatorze requêtes par seconde ne sont pas rapides pour un serveur web. IIS fonctionne beaucoup mieux. Tout ce que vous devez faire est de créer une politique de mise en cache qui place les URL avec l'extension JPG dans le cache du mode noyau. Voici comment ajouter la stratégie de cache :

Ajout d’une stratégie de cache via l’outil de gestion IIS

  1. Accédez à « Outils d’administration » et sélectionnez « Gestionnaire des services Internet (IIS) ».
  2. Utilisez l’arborescence sur le côté gauche pour accéder à l’application « images ».
  3. Sélectionnez l’élément de menu « Règles de mise en cache de sortie ».
  4. Cliquez sur « Ajouter… » dans le menu « Actions ».
  5. Ajoutez JPG comme « Extension de fichier » au cache.
  6. Sélectionnez « À intervalles de temps » dans la section « Surveiller les fichiers mis en cache » et entrez 00:00:10 comme intervalle de temps.
  7. Cochez la case « En-têtes » et entrez « Accept-Language ».

Remarque

L'interface utilisateur du cache de sortie n'est pas disponible dans les versions antérieures à Windows Vista Service Pack 1.

Ajout d’une stratégie de cache via la ligne de commande

Pour effectuer la même procédure avec l’outil appcmd, entrez la commande suivante :

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

Répétez l’exécution des performances pour voir quoi et comment les paramètres de configuration changent.

  1. Démarrez le contrôleur en exécutant les commandes suivantes :

    Cd \perftest
    "%programfiles%\IIS Resources\WCAT Controller\wcctl" 
        -c config.cfg -s script.cfg -d distribution.cfg -a localhost
    
  2. Démarrez le client avec :

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

    Remarque

    Si vous effectuez cela sur une version 64 bits de Windows, WCAT est installé dans le répertoire program files (x86) et vous devez l'utiliser %programfiles(x86)% pour démarrer WCAT.

Exemple de sortie

########################################################################
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)
########################################################################

Rubriques avancées sur la mise en cache de sortie

Compteurs de performance

Pour vérifier les performances du cache de sortie, examinez les compteurs du cache de sortie dans « Analyseur de fiabilité et de performances ». Il existe de nombreux compteurs intéressants. Voici un exemple d'utilisation de « Analyseur de fiabilité et de performances » avec le cache de sortie.

  1. Sur Windows Server 2008, démarrez PERFMON via le menu Démarrer. Allez dans « Outils d'administration » et cliquez sur « Analyseur de fiabilité et de performances ». Sous Vista, vous trouvez « Outils d'administration » dans le Panneau de configuration.
  2. Sélectionnez "Analyseur de performances" dans l'arborescence de droite et cliquez sur le gros signe "+" dans la barre d'outils.
  3. Accédez au compteur « Web Service Cache » et cliquez dessus pour l’ouvrir.
  4. Ajoutez le compteur « Total d’URI mis en cache ».
  5. Réexécutez le test WCAT.

Vous constatez que le nombre d’URI mis en cache augmente en fonction du nombre d’éléments que vous demandez lors du test de performances.

Règles de mise en cache en mode noyau IIS

Le cache de sortie IIS prend en charge deux stratégies de cache. La stratégie de cache de sortie standard tire parti d'un cache qui réside dans un processus de travail IIS. L'autre stratégie de cache est une stratégie de cache en mode noyau, auquel cas le cache réside dans HTTP.SYS, un pilote en mode noyau.

La mise en cache de votre contenu en mode noyau permet à votre site web d’aller plus rapidement. Modifiez la configuration de l’application images pour utiliser le cache en mode noyau. Voici comment la configuration actuelle ressemble (%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>

À présent, modifiez-le pour utiliser la mise en cache en mode noyau :

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

  2. Modifiez le paramètre.

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

    par les suivantes :

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

Vous voyez que nous n’utilisons plus l’attribut varieByHeaders. En effet, kernelModeCache ne prend pas en charge certaines des fonctionnalités prises en charge par le cache de sortie en mode utilisateur.

Limites du cache de sortie en mode noyau

Il existe deux différences significatives entre le cache de sortie en mode utilisateur et en mode noyau.

  • Le cache de sortie en mode noyau ne prend pas en charge les modules et fonctionnalités qui doivent s'exécuter en mode utilisateur, tels que l'authentification ou l'autorisation. Exemple : Si des schémas d'authentification tels que l'authentification De base ou Windows sont activés, la stratégie de cache ne fonctionnera pas. Le contenu est servi, mais pas mis en cache. Voir « Dépannage de la mise en cache » pour savoir comment savoir si le contenu est mis en cache. Plus de détails sur les raisons pour lesquelles les réponses peuvent ne pas être mises en cache en mode noyau sont disponibles dans cet article de la base de connaissances.
  • Le cache de sortie en mode noyau prend en charge l'attributvarieByHeaders mais pasvarieByQuerystring.

Dépanner la mise en cache

Failed Request Event Buffering (FREB) est le meilleur moyen de savoir si votre requête est mise en cache ou non. FREB vous indique pourquoi quelque chose n'est pas mis en cache. Voici un exemple de journal FREB. Dans ce cas, l'événement HTTPSYS_CACHEABLE vous indique que la requête n'est pas mise en cache car le cache en mode noyau n'est pas activé.

Pour plus d'informations sur l'utilisation de FREB, consultez Dépannage des demandes ayant échoué à l'aide du traçage dans IIS 7.

Utilisez la commande suivante pour découvrir quel contenu est mis en cache en mode noyau :

netsh http show cachestate

Complexités de la mise en cache

Même si vous activez la mise en cache de sortie, IIS ne met pas immédiatement en cache une requête. Elle doit être demandée plusieurs fois avant qu'IIS considère qu'une requête est « digne du cache ». La valeur du cache peut être configurée via la section ServerRuntime décrite dans cet article MSDN.

Les deux propriétés qui déterminent la valeur du cache sont fréquentHitTimePeriod et fréquentHitThreshold. Une demande n'est mise en cache que si plus de requêtes <frequentHitThreshold> pour une URL pouvant être mise en cache arrivent dans la fréquence <frequentHitTimePeriod>.

Le paramètre par défaut pour frequentHitTimePeriod est de 10 secondes.

Le paramètre par défaut pour frequentHitThreshold est 2.

Dans l'exemple ci-dessus, nous mettons tous les fichiers avec l'extension JPG dans le cache de sortie. Cela ne fonctionne pas toujours car vous souhaitez parfois être plus sélectif et placer uniquement un document particulier dans le cache de sortie. Voici comment procéder avec votre page la plus fréquemment demandée, votre document par défaut :

  1. Créez un fichier appelé default.aspx dans le répertoire %systemdrive%\inetpub\wwwroot\pictures et ajoutez le code suivant :

    <%=DateTime.Now%>
    
  2. Accédez à « Outils d’administration » et sélectionnez « Gestionnaire des services Internet (IIS) ».

  3. Utilisez l’arborescence sur le côté gauche pour accéder à l’application « images ».

  4. Cliquez sur « Affichage de contenu » en bas de la page.

  5. Sélectionnez votre document par défaut, par exemple, default.aspx page.

  6. Cliquez sur « Basculer vers la vue des fonctionnalités » dans le menu « Actions » à droite. Chaque paramètre que vous configurez ne sera désormais appliqué qu’au document par défaut.

  7. Ouvrez le paramètre « Règles de mise en cache de sortie ».

  8. Ajoutez « .aspx » en tant qu’extension de fichier.

  9. Sélectionnez "Mise en cache en mode noyau", puis sélectionnez "À intervalles de temps" et activez "Surveiller les fichiers mis en cache" et entrez 00:00:30 comme intervalle de temps.

  10. Accédez à http://localhost/pictures avec "Internet Explorer". En actualisant constamment la page (appuyez sur Ctrl+F5 pour vous assurer que cela ne vient pas du cache du navigateur), vous voyez que l'heure ne changera pas pendant 30 secondes.

Résumé

L’utilisation de la fonctionnalité IIS Output Cache pour le contenu semi-dynamique peut améliorer votre site Web. Vous constatez une amélioration substantielle des performances et de la capacité de débit. Un simple changement de configuration suffit pour profiter de cette fonctionnalité.