Schema <scheme>

Übersicht

Das <scheme>-Element des <httpCompression>-Elements gibt die folgenden Einstellungen für die Komprimierungsschemas „Gzip“ (GNU-ZIP) und „Deflate“ in Internetinformationsdienste 7 (Internet Information Services, IIS) an:

  • Die Attribute name und dll geben den Namen bzw. die Anbieter-DLL eines Komprimierungsschemas an. IIS 7 unterstützt sowohl die Gzip- als auch die Deflate-Komprimierung, und beide Komprimierungsschemas werden derzeit in „%windir%\system32\inetsrv\gzip.dll“ implementiert.

  • Das doStaticCompression-Attribut gibt an, ob die statische Komprimierung für das durch das name-Attribut angegebene Komprimierungsschema aktiviert ist. Wenn doStaticCompression auf true festgelegt ist, werden statische Inhalte komprimiert, wenn sie von einem Client angefordert werden. Wenn die statische Komprimierung aktiviert ist, hat jede Anforderung für statische Inhalte, die den Header „Accept-Encoding: gzip“ oder „Accept-Encoding: deflate“ enthält, die Komprimierung der Inhalte zur Folge, sofern das im Header angegebene Komprimierungsschema in IIS aktiviert ist. Wenn die Anforderung diesen Header nicht enthält oder der Header ein in IIS nicht aktiviertes Komprimierungsschema angibt, werden die Inhalte nicht komprimiert.

    Wenn IIS feststellt, dass die Antwort komprimiert werden soll, überprüft IIS das Komprimierungsverzeichnis, das durch das directory-Attribut des <httpCompression>-Elements angegeben ist. Wird in dem Verzeichnis eine neue, komprimierte Version der statischen Datei gefunden, wird sie an den Clientbrowser gesendet. Wenn keine neue, komprimierte Version der Datei gefunden wird und die On-Demand-Komprimierung mit dem dynamicCompressionBeforeCache-Attribut des <urlCompression>-Elements aktiviert wurde, sendet IIS die angeforderte Datei in unkomprimierter Form und fügt sie der Komprimierungswarteschlange im Hintergrund hinzu.

  • Das doDynamicCompression-Attribut gibt an, ob die dynamische Komprimierung für das durch das name-Attribut angegebene Komprimierungsschema aktiviert ist. Wenn doDynamicCompression auf true festgelegt ist, werden dynamische Inhalte komprimiert, wenn sie von einem Client angefordert werden. Wenn die dynamische Komprimierung aktiviert ist, hat jede Anforderung für dynamische Inhalte, die den Header „Accept-Encoding: gzip“ oder „Accept-Encoding: deflate“ enthält, die Komprimierung der Inhalte zur Folge, sofern das im Header angegebene Komprimierungsschema in IIS aktiviert ist. Wenn die Anforderung diesen Header nicht enthält oder der Header ein in IIS nicht aktiviertes Komprimierungsschema angibt, werden die Inhalte nicht komprimiert.

    Hinweis

    Da sich dynamische Inhalte wie der Name schon sagt ständig ändern, speichert IIS keine komprimierten Versionen dynamischer Inhalte zwischen. Die dynamische Komprimierung beansprucht sehr viel CPU-Zeit und sehr viele Arbeitsspeicherressourcen und sollte nur auf Servern mit langsamen Netzwerkverbindungen und verfügbarer CPU-Zeit verwendet werden.

  • Die Attribute dynamicCompressionLevel und staticCompressionLevel geben die Komprimierungsstufen für die Komprimierungsschemas an, wenn IIS dynamische oder statische Inhalte komprimiert. Niedrigere Komprimierungsstufen erzeugen etwas größere komprimierte Dateien, haben aber eine geringere Gesamtauswirkung auf CPU- und Arbeitsspeicherressourcen. Höhere Komprimierungsstufen führen in der Regel zu kleineren komprimierten Dateien, gehen aber mit einer höheren CPU- und Arbeitsspeicherauslastung einher.

Hinweis

Standardmäßig ist in IIS 7 nur das Gzip-Komprimierungsschema verfügbar. Informationen zum programmgesteuerten Aktivieren des Deflate-Komprimierungsschemas finden Sie im Abschnitt Codebeispiele dieses Dokuments.

Kompatibilität

Version Hinweise
IIS 10.0 Das <scheme>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <scheme>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <scheme>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <scheme>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <scheme>-Element des <httpCompression>-Elements wurde in IIS 7.0 eingeführt.
IIS 6.0 Das <scheme>-Element ersetzt die folgenden Metabasiseigenschaften von IIS 6.0:
  • HcCompressionDll
  • HcDoDynamicCompression
  • HcDoStaticCompression
  • HcDynamicCompressionLevel

Setup

Die HTTP-Komprimierung ist in der Regel in der Standardinstallation von IIS 7 und höheren Versionen verfügbar. Standardmäßig wird jedoch nur die statische Komprimierung installiert. Führen Sie die folgenden Schritte aus, um die statische oder dynamische Komprimierung zu installieren:

Windows Server 2012 oder Windows Server 2012 R2

  1. Klicken Sie auf der Taskleiste auf Server-Manager.
  2. Klicken Sie im Server-Manager auf Verwalten und dann auf Rollen und Features hinzufügen.
  3. Klicken Sie im Assistenten zum Hinzufügen von Rollen und Features auf Weiter. Wählen Sie den Installationstyp aus, und klicken Sie auf Weiter. Wählen Sie den Zielserver aus, und klicken Sie auf Weiter.
  4. Erweitern Sie auf der Seite Serverrollen die Option Webserver (IIS), erweitern Sie Webserver, erweitern Sie Leistung, und wählen Sie dann Statische Inhaltskomprimierung und/oder Dynamische Inhaltskomprimierung aus. Klicken Sie auf Weiter.
    Screenshot of Performance pane expanded with Static Content Compression selected and Dynamic Content Compression highlighted.
  5. Klicken Sie auf der Seite Features auswählen auf Weiter.
  6. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  7. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows 8 oder Windows 8.1

  1. Bewegen Sie auf dem Startbildschirm den Mauszeiger ganz nach links unten, klicken Sie mit der rechten Maustaste auf die Schaltfläche Start, und klicken Sie dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste, erweitern Sie WWW-Dienste, erweitern Sie Leistungsfeatures, und wählen Sie dann Dynamische Inhaltskomprimierung und/oder Statische Inhaltskomprimierung aus.
    Screenshot shows Performance Features pane in Turn Windows features on or off page expanded and Static Content Compression highlighted.
  4. Klicken Sie auf OK.
  5. Klicken Sie auf Schließen.

Windows Server 2008 oder Windows Server 2008 R2

  1. Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltungstools, und klicken Sie dann auf Server-Manager.
  2. Erweitern Sie im Hierarchiebereich Server-Manager die Option Rollen, und klicken Sie dann auf Webserver (IIS).
  3. Scrollen Sie im Bereich Webserver (IIS) zum Abschnitt Rollendienste, und klicken Sie dann auf Rollendienste hinzufügen.
  4. Wählen Sie auf der Seite Rollendienste auswählen des Assistenten zum Hinzufügen von Rollendiensten die Option DynamischeInhaltskomprimierung aus, wenn Sie die dynamische Komprimierung verwenden möchten, bzw. wählen Sie Statische Inhaltskomprimierung aus, wenn Sie die statische Inhaltskomprimierung installieren möchten. Klicken Sie dann auf Weiter.
    Screenshot shows Select Role Services page with Performance node expanded and Dynamic Content Compression highlighted.
  5. Klicken Sie auf der Seite Installationsauswahl bestätigen auf Installieren.
  6. Klicken Sie auf der Seite Ergebnisse auf Schließen.

Windows Vista oder Windows 7

  1. Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
  2. Klicken Sie in der Systemsteuerung auf Programme und Features und dann auf Windows-Features aktivieren oder deaktivieren.
  3. Erweitern Sie Internetinformationsdienste > WWW-Dienste > Leistungsfeatures.
  4. Wählen Sie Dynamische HTTP-Komprimierung aus, wenn Sie die dynamische Komprimierung installieren möchten, bzw. wählen Sie Statische Inhaltskomprimierung aus, wenn Sie die statische Komprimierung installieren möchten.
    Screenshot of Turn Windows features on or off page showing Performance Features node expanded and H T T P Common Dynamics selected.
  5. Klicken Sie auf OK.

Gewusst wie

Für IIS 7 steht keine Benutzeroberfläche zum Festlegen des Komprimierungsschemas zur Verfügung. Beispiele zum programmgesteuerten Festlegen des Komprimierungsschemas finden Sie im Abschnitt Codebeispiele dieses Dokuments.

Konfiguration

Attribute

Attribut Beschreibung
dll Erforderliches Zeichenfolgenattribut.

Gibt den vollqualifizierten Dateisystempfad und den Dateinamen der Komprimierungs-DLL an, die dem Komprimierungsschema zugeordnet ist. Der WWW-Publishingdienst (WWW-Dienst) muss neu gestartet werden, damit Änderungen an diesem Attribut wirksam werden.
doDynamicCompression Optionales boolesches Attribut.

Gibt an, ob Antworten auf Anforderungen für dynamische Inhalte (z. B. Skripts in Active Server Pages (ASP) und ISAPI-Erweiterungen) komprimiert werden. Wenn dieser Wert auf der Ebene einzelner Komprimierungsschemas geändert wird, muss der WWW-Dienst neu gestartet werden, damit die Änderung wirksam wird.

Der Standardwert ist true.
doStaticCompression Optionales boolesches Attribut.

Gibt an, ob IIS Antworten auf Anforderungen für statische Inhalte komprimiert. Da dieses Attribut nicht geerbt werden kann, muss es sowohl auf globaler Ebene (<httpCompression>) als auch auf der individuellen Schemaebene festgelegt werden, wenn das name-Attribut auf Gzip festgelegt ist. Wenn dieser Wert auf der Ebene einzelner Komprimierungsschemas geändert wird, muss der WWW-Dienst neu gestartet werden, damit die Änderung wirksam wird.

Hinweis: Der statische Komprimierungsspeicher muss sich in einer Datenträgerpartition oder Remotefreigabe befinden, die mit NTFS formatiert ist. Wenn der Dateispeicher nicht mit NTFS formatiert ist, ist die statische Komprimierung deaktiviert. Aus Sicherheitsgründen werden keine komprimierten Antworten aus einem FAT-Cachespeicher bereitgestellt.

Der Standardwert ist true.
dynamicCompressionLevel Optionales uint-Attribut.

Gibt die Komprimierungsstufe für das Komprimierungsschema an, wenn dynamische Inhalte komprimiert werden. Die Stufen reichen von „0“ (niedrigste Komprimierungsstufe und geringste CPU-Auslastung) bis „10“ (höchste Komprimierungsstufe und höchste CPU-Auslastung). Der WWW-Dienst muss neu gestartet werden, damit Änderungen an diesem Attribut wirksam werden.

Hinweis: Da die dynamische Komprimierung sehr viel CPU-Zeit und sehr viele Arbeitsspeicherressourcen beansprucht, sollte sie nur auf Servern mit langsamen Netzwerkverbindungen und verfügbarer CPU-Zeit verwendet werden. Komprimierte statische Antworten können zwischengespeichert werden und wirken sich daher im Gegensatz zu dynamischen Antworten nicht auf CPU-Ressourcen aus.

Der Standardwert ist 0.
name Erforderliches Zeichenfolgenattribut.

Gibt den Namen des Komprimierungsschemas an. Beispiel: Gzip oder Deflate.
staticCompressionLevel Optionales uint-Attribut.

Gibt die Komprimierungsstufe für das Komprimierungsschema an, wenn statische Inhalte komprimiert werden. Die Stufen reichen von „0“ (niedrigste Komprimierungsstufe und geringste CPU-Auslastung) bis „10“ (höchste Komprimierungsstufe und höchste CPU-Auslastung). Bei „0“ ist die Komprimierung deaktiviert. Der WWW-Dienst muss neu gestartet werden, damit Änderungen an diesem Attribut wirksam werden.

Der Standardwert ist 7.

Untergeordnete Elemente

Element Beschreibung
remove Optionales Element.

Entfernt einen Verweis auf ein HTTP-Komprimierungsschema aus der HTTP-Komprimierungsschemasammlung.
clear Optionales Element.

Entfernt alle Verweise auf HTTP-Komprimierungsschemas aus der HTTP-Komprimierungsschemasammlung.

Konfigurationsbeispiel

Das folgende <httpCompression>-Standardelement wird in IIS 7 in der Datei „ApplicationHost.config“ konfiguriert. Dieser Konfigurationsabschnitt erbt die Standardkonfigurationseinstellungen, es sei denn, Sie verwenden das <clear>-Element.

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

Beispielcode

Die folgenden Codebeispiele fügen IIS 7 das Deflate-Komprimierungsschema hinzu.

AppCmd.exe

appcmd.exe set config -section:system.webServer/httpCompression /+"[name='deflate',doStaticCompression='True',doDynamicCompression='True',dll='%Windir%\system32\inetsrv\gzip.dll']" /commit:apphost

Hinweis

Legen Sie den commit-Parameter auf apphost fest, wenn Sie „AppCmd.exe“ verwenden, um diese Einstellungen zu konfigurieren. Dadurch werden die Konfigurationseinstellungen auf den entsprechenden Speicherortabschnitt in der Datei „ApplicationHost.config“ festgelegt.

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