Partager via


Schéma <schéma>

Vue d’ensemble

L’élément <scheme> de l’élément <httpCompression> spécifie les paramètres suivants pour les schémas de compression GNU zip (Gzip) et Deflate dans Internet Information Services (IIS) 7 :

  • Les attributs nom et dll spécifient respectivement le nom et la DLL de fournisseur d’un schéma de compression. IIS 7 prend en charge la compression Gzip et Deflate, et les deux schémas de compression sont actuellement implémentés dans %windir%\system32\inetsrv\gzip.dll.

  • L’attribut doStaticCompression spécifie si la compression statique est activée pour le schéma de compression spécifié par l’attribut nom. La définition de doStaticCompression sur true spécifie que le contenu statique sera compressé lorsqu’il est demandé par un client. Si la compression statique est activée, chaque demande de contenu statique qui contient l’en-tête « Accept-Encoding: gzip » ou « Accept-Encoding: deflate » entraîne la compression du contenu, tant que le schéma de compression spécifié dans l’en-tête est activé dans IIS. Si la requête ne contient pas cet en-tête ou si l’en-tête spécifie un schéma de compression qui n’est pas activé dans IIS, le contenu n’est pas compressé.

    Si IIS détermine que la réponse doit être compressée, IIS vérifie le répertoire de compression spécifié par l’attribut répertoire de l’élément <httpCompression>. Si une nouvelle version compressée du fichier statique se trouve dans le répertoire, elle est envoyée au navigateur client. Si une nouvelle version compressée du fichier est introuvable et que la compression à la demande est activée avec l’attribut dynamicCompressionBeforeCache de l’élément <urlCompression>, IIS envoie le fichier demandé sous forme non compressée et ajoute ce fichier à la file d’attente de compression en arrière-plan.

  • L’attribut doDynamicCompression spécifie si la compression dynamique est activée pour le schéma de compression spécifié par l’attribut nom. La définition de doDynamicCompression sur true spécifie que le contenu dynamique sera compressé lorsque demandé par un client. Si la compression dynamique est activée, chaque demande de contenu dynamique qui contient l’en-tête « Accept-Encoding: gzip » ou « Accept-Encoding: deflate » entraîne la compression du contenu, tant que le schéma de compression spécifié dans l’en-tête est activé dans IIS. Si la requête ne contient pas cet en-tête ou si l’en-tête spécifie un schéma de compression qui n’est pas activé dans IIS, le contenu n’est pas compressé.

    Remarque

    Étant donné que le contenu dynamique est en constante évolution par définition, IIS ne met pas en cache les versions compressées du contenu dynamique. La compression dynamique consomme beaucoup de temps processeur et de ressources de mémoire, et ne doit être utilisée que sur les serveurs qui ont des connexions réseau lentes et du temps processeur à dépenser.

  • Les attributs dynamicCompressionLevel et staticCompressionLevel spécifient les niveaux de compression des schémas de compression lorsque IIS compresse respectivement du contenu dynamique ou du contenu statique. Les niveaux de compression inférieurs produisent des fichiers compressés légèrement plus grands, mais avec un impact global plus faible sur les ressources processeur et mémoire. Les niveaux de compression plus élevés entraînent généralement des fichiers compressés plus petits, mais avec une utilisation plus élevée du processeur et de la mémoire.

Remarque

Par défaut, seul le schéma de compression Gzip est disponible dans IIS 7. Pour activer le schéma de compression Deflate par programmation, consultez la section Exemples de code de ce document.

Compatibilité

Version Notes
IIS 10.0 L’élément <scheme> n’a pas été modifié dans IIS 10.0.
IIS 8.5 L’élément <scheme> n’a pas été modifié dans IIS 8.5.
IIS 8.0 L’élément <scheme> n’a pas été modifié dans IIS 8.0.
IIS 7.5 L’élément <scheme> n’a pas été modifié dans IIS 7.5.
IIS 7.0 L’élément <scheme> de l’élément <httpCompression> a été introduit dans IIS 7.0.
IIS 6.0 L’élément <scheme> remplace les propriétés de métabase IIS 6.0 suivantes :
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

Programme d’installation

La compression HTTP est généralement disponible avec l’installation par défaut d’IIS 7 et les versions ultérieures. Toutefois, seule la compression statique est installée par défaut. Pour installer la compression statique ou dynamique, effectuez les étapes suivantes.

Windows Server 2012 ou Windows Server 2012 R2

  1. Dans la barre des tâches, cliquez sur Gestionnaire de serveur.
  2. Dans Gestionnaire de serveur, cliquez sur le menu Gérer, puis sur Ajouter des rôles et des fonctionnalités.
  3. Dans l’Assistant Ajout de rôles et de fonctionnalités, cliquez sur Suivant. Sélectionnez le type d’installation, puis cliquez sur Suivant. Sélectionnez le serveur de destination, puis cliquez sur Suivant.
  4. Dans la page Rôles serveur, développez Serveur web (IIS), développez Serveur web, développez Performances, puis sélectionnez Compression de contenu statique et/ou Compression de contenu dynamique. Sélectionnez Suivant.
    Screenshot of Performance pane expanded with Static Content Compression selected and Dynamic Content Compression highlighted.
  5. Dans la page Sélectionner les composants, cliquez sur Suivant.
  6. Dans la page Confirmer les sélections d’installation, cliquez sur Installer.
  7. Dans la page Résultats , cliquez sur Fermer.

Windows 8 ou Windows 8.1

  1. Dans l’écran d’accueil, déplacez le pointeur jusqu’au coin inférieur gauche, cliquez avec le bouton droit sur le bouton Démarrer, puis cliquez sur Panneau de configuration.
  2. Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez Internet Information Services, développez World Wide Web Services, développez Fonctionnalités de performances, puis sélectionnez Compression de contenu dynamique et/ou Compression de contenu statique.
    Screenshot shows Performance Features pane in Turn Windows features on or off page expanded and Static Content Compression highlighted.
  4. Cliquez sur OK.
  5. Cliquez sur Fermer.

Windows Server 2008 ou Windows Server 2008 R2

  1. Dans la barre des tâches, cliquez sur Démarrer, pointez sur Outils d’administration, puis cliquez sur Gestionnaire de serveur.
  2. Dans le volet hiérarchie du Gestionnaire de serveur, développez Rôles, puis cliquez sur Serveur web (IIS).
  3. Dans le volet Serveur web (IIS), faites défiler jusqu’à la section Services de rôle, puis cliquez sur Ajouter des services de rôle.
  4. Dans la page Sélectionner les services de rôle de l’Assistant Ajouter des services de rôle, sélectionnez Compression de contenudynamique pour installer la compression dynamique, et Compression de contenu statique si vous souhaitez installer la compression statique, puis cliquez sur Suivant.
    Screenshot shows Select Role Services page with Performance node expanded and Dynamic Content Compression highlighted.
  5. Dans la page Confirmer les sélections pour l'installation, cliquez sur Installer.
  6. Dans la page Résultats , cliquez sur Fermer.

Windows Vista ou Windows 7

  1. Dans la barre des tâches, cliquez sur Démarrer, puis sur Panneau de configuration.
  2. Dans le Panneau de configuration, cliquez sur Programmes et fonctionnalités, puis sur Activer ou désactiver des fonctionnalités Windows.
  3. Développez tour à tour Internet Information Services, World Wide Web Services et Fonctionnalités de performances.
  4. Sélectionnez Compression HTTP dynamique si vous souhaitez installer la compression dynamique, et Compression de contenu statique pour installer la compression statique.
    Screenshot of Turn Windows features on or off page showing Performance Features node expanded and H T T P Common Dynamics selected.
  5. Cliquez sur OK.

Procédure

Il n’existe aucune interface utilisateur pour définir le schéma de compression pour IIS 7. Pour obtenir des exemples sur la manière de définir le schéma de programmation par programmation, consultez la section Exemples de code de ce document.

Configuration

Attributs

Attribut Description
dll Attribut de chaîne requis.

Spécifie le chemin d’accès complet du système de fichiers et le nom de fichier de la DLL de compression associée au schéma de compression. Le service de publication World Wide Web (service WWW) doit être redémarré pour que les modifications apportées à cet attribut prennent effet.
doDynamicCompression Attribut booléen facultatif.

Spécifie si les réponses aux demandes de contenu dynamique, telles que les scripts dans les pages ASP (Active Server Pages) et les extensions ISAPI, sont compressées. Si cette valeur est modifiée au niveau du schéma de compression individuel, le service WWW doit être redémarré pour que la modification prenne effet.

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

Spécifie si IIS compresse les réponses aux demandes de contenu statique. Étant donné que cet attribut ne peut pas être hérité, il doit être défini sur true à la fois au niveau global (<httpCompression>) et au niveau du schéma individuel si l’attribut nom est défini sur Gzip. Si cette valeur est modifiée au niveau du schéma de compression individuel, le service WWW doit être redémarré pour que la modification prenne effet.

Remarque : le magasin de compression statique doit se trouver dans une partition de disque ou un partage distant mis en forme avec NTFS. Si le magasin de fichiers n’est pas NTFS, la compression statique est désactivée. Pour des raisons de sécurité, aucune réponse compressée n’est servie à partir d’un magasin de cache FAT.

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

Spécifie le niveau de compression du schéma de compression lorsque le contenu dynamique est compressé. Les niveaux varient de 0 (niveau de compression le plus bas et d’utilisation la plus faible du processeur) à 10 (niveau de compression le plus élevé et utilisation la plus élevée du processeur). Le service WWW doit être redémarré pour que les modifications apportées à cet attribut prennent effet.

Remarque : étant donné que la compression dynamique consomme beaucoup de temps processeur et de ressources de mémoire, utilisez-la uniquement sur les serveurs qui ont des connexions réseau lentes et du temps processeur à dépenser. Les réponses statiques compressées peuvent être mises en cache et, par conséquent, n’affectent pas les ressources processeur comme les réponses dynamiques.

La valeur par défaut est 0.
name Attribut de chaîne requis.

Spécifie le nom du schéma de compression. Par exemple, Gzip ou Deflate.
staticCompressionLevel Attribut uint facultatif.

Spécifie le niveau de compression du schéma de compression lorsque le contenu statique est compressé. Les niveaux varient de 0 (niveau de compression le plus bas et d’utilisation la plus faible du processeur) à 10 (niveau de compression le plus élevé et utilisation la plus élevée du processeur). 0 signifie que la compression est désactivée. Le service WWW doit être redémarré pour que les modifications apportées à cet attribut prennent effet.

La valeur par défaut est 7.

Éléments enfants

Élément Description
remove Élément facultatif.

Supprime une référence à un schéma de compression HTTP de la collection de schémas de compression HTTP.
clear Élément facultatif.

Supprime toutes les références aux schémas de compression HTTP de la collection de schémas de compression HTTP.

Exemple Configuration

L’élément <httpCompression> par défaut suivant est configuré dans le fichier ApplicationHost.config dans IIS 7. Cette section de configuration hérite des paramètres de configuration par défaut, sauf si vous utilisez l’élément <clear>.

<httpCompression
      directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
   <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
   <dynamicTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </dynamicTypes>
   <staticTypes>
      <add mimeType="text/*" enabled="true" />
      <add mimeType="message/*" enabled="true" />
      <add mimeType="application/javascript" enabled="true" />
      <add mimeType="*/*" enabled="false" />
   </staticTypes>
</httpCompression>

Exemple de code

Les exemples de code suivants ajoutent le schéma de compression Deflate à IIS 7.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /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 httpCompressionSection = config.GetSection("system.webServer/httpCompression");
         ConfigurationElementCollection httpCompressionCollection = httpCompressionSection.GetCollection();

         ConfigurationElement schemeElement = httpCompressionCollection.CreateElement("scheme");
         schemeElement["name"] = @"deflate";
         schemeElement["doStaticCompression"] = true;
         schemeElement["doDynamicCompression"] = true;
         schemeElement["dll"] = @"%Windir%\system32\inetsrv\gzip.dll";
         httpCompressionCollection.Add(schemeElement);

         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 httpCompressionSection As ConfigurationSection = config.GetSection("system.webServer/httpCompression")
      Dim httpCompressionCollection As ConfigurationElementCollection = httpCompressionSection.GetCollection

      Dim schemeElement As ConfigurationElement = httpCompressionCollection.CreateElement("scheme")
      schemeElement("name") = "deflate"
      schemeElement("doStaticCompression") = True
      schemeElement("doDynamicCompression") = True
      schemeElement("dll") = "%Windir%\system32\inetsrv\gzip.dll"
      httpCompressionCollection.Add(schemeElement)

      serverManager.CommitChanges()
   End Sub

End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST");
var httpCompressionCollection = httpCompressionSection.Collection;

var schemeElement = httpCompressionCollection.CreateNewElement("scheme");
schemeElement.Properties.Item("name").Value = "deflate";
schemeElement.Properties.Item("doStaticCompression").Value = true;
schemeElement.Properties.Item("doDynamicCompression").Value = true;
schemeElement.Properties.Item("dll").Value = "%Windir%\\system32\\inetsrv\\gzip.dll";
httpCompressionCollection.AddElement(schemeElement);

adminManager.CommitChanges();

VBScript

Set adminManager = WScript.CreateObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set httpCompressionSection = adminManager.GetAdminSection("system.webServer/httpCompression", "MACHINE/WEBROOT/APPHOST")
Set httpCompressionCollection = httpCompressionSection.Collection

Set schemeElement = httpCompressionCollection.CreateNewElement("scheme")
schemeElement.Properties.Item("name").Value = "deflate"
schemeElement.Properties.Item("doStaticCompression").Value = True
schemeElement.Properties.Item("doDynamicCompression").Value = True
schemeElement.Properties.Item("dll").Value = "%Windir%\system32\inetsrv\gzip.dll"
httpCompressionCollection.AddElement(schemeElement)

adminManager.CommitChanges()