Partager via


Mise en cache <mise en cache>

Vue d’ensemble

L'élément <caching> vous permet d'activer ou de désactiver la mise en cache de sortie de page pour une application Internet Information Services (IIS) 7. Cet élément vous permet également de configurer si IIS met en cache la sortie de page en mode utilisateur, en mode noyau ou les deux, et quelles sont les limites éventuelles de mise en cache de la sortie que vous souhaitez imposer.

L'élément <caching> contient également un élément <profiles> qui contient une collection de paramètres de mise en cache de sortie que vous pouvez appliquer aux pages ASP.NET.

La mise en cache de la sortie d'une page enregistre la réponse d'une page dynamique, comme une page ASP ou une page ASP.NET, dans la mémoire après qu'un navigateur l'a demandée. Lorsque des requêtes ultérieures arrivent pour la page, le serveur envoie la réponse mise en cache au lieu de retraiter la page. La mise en cache de sortie de page ASP.NET est distinct de la mise en cache de sortie d'IIS 7. Dans les applications qui utilisent le mode ASP.NET intégré, la mise en cache de sortie de page ASP.NET peut être utilisé par programme pour n'importe quel type de contenu, tout comme la mise en cache de sortie d'IIS 7.

La mise en cache de la sortie de la page réduit la charge du serveur et le temps de réponse. La mise en cache de sortie fonctionne mieux avec les pages semi-dynamiques, comme une page ASP.NET qui dépend d'une table de base de données qui ne change pas souvent.

La mise en cache de sortie n'est pas nécessaire pour les fichiers statiques, comme les fichiers HTML, JPG ou GIF, et peut entraîner une surcharge de mémoire pour les pages dynamiques ASP.NET ou PHP qui lisent des données provenant d'une base de données qui change régulièrement.

Compatibilité

Version Notes
IIS 10.0 L'élément <caching> n'a pas été modifié dans IIS 10.0.
IIS 8.5 L'élément <caching> n'a pas été modifié dans IIS 8.5.
IIS 8.0 L'élément <caching> n'a pas été modifié dans IIS 8.0.
IIS 7.5 L'élément <caching> n'a pas été modifié dans IIS 7.5.
IIS 7.0 L'élément <caching> a été introduit dans IIS 7.0.
IIS 6.0 S/O

Programme d’installation

L'élément <caching> est inclus dans l'installation par défaut d'IIS 7.

Procédure

Comment configurer la mise en cache de sortie de page

  1. Ouvrez le Gestionnaire d'Internet Information Services (IIS) :

    • Si vous utilisez Windows Server 2012 ou Windows Server 2012 R2 :

      • Dans la barre des tâches, cliquez sur Gestionnaire de serveur, cliquez sur Outils, puis sur Gestionnaire d'Internet Information Services (IIS).
    • Si vous utilisez Windows 8 ou Windows 8.1 :

      • Maintenez la touche Windows enfoncée, appuyez sur la lettre X, puis cliquez sur Panneau de configuration.
      • Cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire des services Internet (IIS).
    • Si vous utilisez Windows Server 2008 ou Windows Server 2008 R2 :

      • Cliquez sur Démarrer, placez le curseur sur Outils d'administration, puis cliquez sur Gestionnaire Internet Information Services (IIS).
    • Si vous utilisez Windows Vista ou Windows 7 :

      • Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
      • Double-cliquez sur Outils d'administration, puis double-cliquez sur Gestionnaire Internet Information Services (IIS).
  2. Dans le volet Connexions, accédez à la connexion, au site, à l'application ou au répertoire pour lequel vous souhaitez configurer la mise en cache de sortie de page.

  3. Dans le volet Accueil, faites défiler jusqu'à Mise en cache de sortie, puis double-cliquez sur Mise en cache de sortie.
    Screenshot of Output Caching selected in the Default Web Site Home pane.

  4. Dans le volet Actions, cliquer sur Ajouter…

  5. Dans la boîte de dialogue Ajouter une règle de cache, tapez l'extension de nom de fichier que vous souhaitez mettre en cache dans la zone Extension de nom de fichier, puis sélectionnez l'option Mise en cache en mode utilisateur, l'option Mise en cache en mode noyau ou les deux.

  6. Sélectionnez les options que vous souhaitez utiliser pour la mise en cache, puis cliquez sur OK.
    Screenshot of the Add Cache Rule dialog with the specified options.

Configuration

Vous pouvez configurer l'élément <caching> au niveau du serveur dans le fichier ApplicationHost.config ou au niveau du site, de l'application ou du répertoire dans un fichier Web.config.

Attributs

Attribut Description
enabled Attribut booléen facultatif.

Spécifie si la mise en cache de sortie de page est activée.

La valeur par défaut est true.
enableKernelCache Attribut booléen facultatif.

Spécifie si la mise en cache du noyau est activée.

La valeur par défaut est true.
maxCacheSize Attribut uint facultatif.

Spécifie la taille maximale e la mise en cache de sortie.

Remarque : ce paramètre est effectif uniquement au niveau du fichier ApplicationHost.config. Si vous définissez cette propriété à un niveau inférieur, elle n'aura aucun effet.

La valeur par défaut est 0.
maxResponseSize Attribut uint facultatif.

Spécifie la taille de réponse maximale qui peut être mise en cache.

Remarque : ce paramètre est effectif uniquement au niveau du fichier ApplicationHost.config. Si vous définissez cette propriété à un niveau inférieur, elle n'aura aucun effet.

La valeur par défaut est 262144.

Éléments enfants

Élément Description
profiles Élément facultatif.

Contient un groupe de paramètres de mise en cache de sortie qui peuvent être appliqués aux pages ASP.NET.

Exemple Configuration

L'exemple de configuration suivant active la mise en cache en mode utilisateur et la mise en cache en mode noyau, toutes deux activées par défaut dans IIS 7.0. Elle utilise également l'élément <add> contenu par l'élément <profiles> pour activer la mise en cache de sortie pour les fichiers avec l'extension de nom de fichier .asp. Elle utilise également l'attribut stratégie pour mettre en cache la page jusqu'à ce qu'elle change. Elle fait de même pour la mise en cache du noyau à l'aide de l'attribut kernelCachePolicy.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

L'exemple de code suivant définit la taille maximale du cache de sortie sur 1 gigaoctet et définit la taille maximale d'une réponse pouvant être stockée dans le cache de sortie à 512 kilo-octets.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

Exemple de code

Les exemples suivants configurent la mise en cache de sortie de page pour les fichiers avec l'extension de nom de fichier .asp, et configurent IIS pour mettre en cache en mode utilisateur et en mode noyau jusqu'à ce que les fichiers ASP changent.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Remarque

Vous devez veiller à définir le paramètre commit sur apphost quand vous utilisez AppCmd.exe pour configurer ces paramètres. Cela valide les paramètres de configuration dans la section d'emplacement appropriée dans le fichier ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()