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
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).
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.
Dans le volet Accueil, faites défiler jusqu'à Mise en cache de sortie, puis double-cliquez sur Mise en cache de sortie.
Dans le volet Actions, cliquer sur Ajouter…
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.
Sélectionnez les options que vous souhaitez utiliser pour la mise en cache, puis cliquez sur OK.
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()