Zwischenspeichern <caching>

Übersicht

Mit dem <caching>-Element können Sie die Seitenausgabezwischenspeicherung für eine IIS 7-Anwendung (Internet Information Services, Internetinformationsdienste) aktivieren oder deaktivieren. Außerdem können Sie mit diesem Element konfigurieren, ob Seitenausgaben von IIS im Benutzermodus, im Kernelmodus oder in beiden Modi zwischengespeichert werden und welche Grenzwerte ggf. für die Ausgabezwischenspeicherung gelten sollen.

Das <caching>-Element enthält auch ein <profiles>-Element, das wiederum eine Sammlung von Ausgabecacheeinstellungen enthält, die Sie auf ASP.NET-Seiten anwenden können.

Der Seitenausgabezwischenspeicherung speichert eine Antwort einer dynamischen Seite (z. B. einer ASP-Seite oder einer ASP.NET-Seite) im Arbeitsspeicher, nachdem sie von einem Browser angefordert wurde. Wenn weitere Anforderungen für die Seite eingehen, sendet der Server die zwischengespeicherte Antwort, anstatt die Seite erneut zu verarbeiten. Der ASP.NET-Seitenausgabecache ist vom IIS 7-Ausgabecache getrennt. In Anwendungen, die den integrierten ASP.NET-Modus verwenden, kann der ASP.NET-Seitenausgabecache programmgesteuert für jeden beliebigen Inhaltstyp verwendet werden – ähnlich wie der IIS 7-Ausgabecache.

Die Seitenausgabezwischenspeicherung verringert die Serverlast und die Reaktionszeit. Die Ausgabezwischenspeicherung eignet sich am besten für halb dynamische Seiten (also beispielsweise für eine ASP.NET-Seite, die von einer Datenbanktabelle abhängig ist, die sich nicht häufig ändert).

Für statische Dateien wie etwa HTML-, JPG- oder GIF-Dateien ist der Ausgabezwischenspeicherung unnötig, und bei dynamischen ASP.NET- oder PHP-Seiten, die aus einer sich häufig ändernden Datenbank lesen, kann er zu einem höheren Mehraufwand für den Arbeitsspeicher führen.

Kompatibilität

Version Hinweise
IIS 10.0 Das <caching>-Element wurde in IIS 10.0 nicht geändert.
IIS 8.5 Das <caching>-Element wurde in IIS 8.5 nicht geändert.
IIS 8.0 Das <caching>-Element wurde in IIS 8.0 nicht geändert.
IIS 7.5 Das <caching>-Element wurde in IIS 7.5 nicht geändert.
IIS 7.0 Das <caching>-Element wurde in IIS 7.0 eingeführt.
IIS 6.0 N/V

Setup

Das <caching>-Element ist in der Standardinstallation von IIS 7 enthalten.

Gewusst wie

Konfigurieren der Seitenausgabezwischenspeicherung

  1. Öffnen Sie Internetinformationsdienste-Manager (IIS-Manager):

    • Vorgehensweise unter Windows Server 2012 oder Windows Server 2012 R2:

      • Klicken Sie auf der Taskleiste auf Server-Manager > Tools > Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows 8 oder Windows 8.1:

      • Halten Sie die WINDOWS-TASTE gedrückt, drücken Sie den Buchstaben X, und klicken Sie dann auf Systemsteuerung.
      • Klicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Server 2008 oder Windows Server 2008 R2:

      • Klicken Sie auf der Taskleiste auf Start, zeigen Sie auf Verwaltung, und klicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
    • Vorgehensweise unter Windows Vista oder Windows 7:

      • Klicken Sie auf der Taskleiste auf Start und dann auf Systemsteuerung.
      • Doppelklicken Sie auf Verwaltung, und doppelklicken Sie dann auf Internetinformationsdienste-Manager (IIS-Manager).
  2. Navigieren Sie im Bereich Verbindungen zu dem Element, für das Sie die Seitenausgabezwischenspeicherung aktivieren möchten. Dabei kann es sich um eine Verbindung, eine Site, eine Anwendung oder ein Verzeichnis handeln.

  3. Scrollen Sie im Bereich Start zu Ausgabezwischenspeicherung, und doppelklicken Sie dann auf Ausgabezwischenspeicherung.
    Screenshot of Output Caching selected in the Default Web Site Home pane.

  4. Klicken Sie im Bereich Aktionen auf Hinzufügen....

  5. Geben Sie im Dialogfeld Cacheregel hinzufügen im Feld Dateinamenerweiterung die Dateinamenerweiterung ein, die Sie zwischenspeichern möchten, und wählen Sie anschließend die Option Zwischenspeicherung im Benutzermodus, die Option Zwischenspeicherung im Kernelmodus oder beide Optionen aus.

  6. Wählen Sie die gewünschten Optionen für das Zwischenspeichern aus, und klicken Sie anschließend auf OK.
    Screenshot of the Add Cache Rule dialog with the specified options.

Konfiguration

Das <caching>-Element kann auf der Serverebene in der Datei „ApplicationHost.config“ oder auf der Site-, Anwendungs- oder Verzeichnisebene in einer Datei vom Typ „Web.config“ konfiguriert werden.

Attribute

Attribut Beschreibung
enabled Optionales boolesches Attribut.

Gibt an, ob die Seitenausgabezwischenspeicherung aktiviert ist.

Der Standardwert ist true.
enableKernelCache Optionales boolesches Attribut.

Gibt an, ob die Kernelzwischenspeicherung aktiviert ist.

Der Standardwert ist true.
maxCacheSize Optionales uint-Attribut.

Gibt die maximal zulässige Größe des Ausgabecache an.

Hinweis: Diese Einstellung ist nur auf der Ebene der Datei „ApplicationHost.config“ wirksam. Wenn Sie diese Eigenschaft auf einer niedrigeren Ebene festlegen, hat sie keine Wirkung.

Der Standardwert ist 0.
maxResponseSize Optionales uint-Attribut.

Gibt die maximale Antwortgröße an, die zwischengespeichert werden kann.

Hinweis: Diese Einstellung ist nur auf der Ebene der Datei „ApplicationHost.config“ wirksam. Wenn Sie diese Eigenschaft auf einer niedrigeren Ebene festlegen, hat sie keine Wirkung.

Der Standardwert ist 262144.

Untergeordnete Elemente

Element Beschreibung
profiles Optionales Element.

Enthält eine Gruppe von Ausgabecacheeinstellungen, die auf ASP.NET-Seiten angewendet werden können.

Konfigurationsbeispiel

Im folgenden Konfigurationsbeispiel werden die Zwischenspeicherung im Benutzermodus und die Zwischenspeicherung im Kernelmodus aktiviert. Beide sind in IIS 7.0 standardmäßig aktiviert. Außerdem wird das im <profiles>-Element enthaltene <add>-Element verwendet, um die Ausgabezwischenspeicherung für Dateien mit der Dateinamenerweiterung „.asp“ zu aktivieren. Des Weiteren wird das policy-Attribut verwendet, um die Seite im Ausgabecache zwischenzuspeichern, bis sie sich ändert. Das Gleiche wird für die Kernelzwischenspeicherung unter Verwendung des kernelCachePolicy-Attributs durchgeführt.

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

Im folgenden Codebeispiel wird die maximale Größe des Ausgabecache auf 1 Gigabyte und die maximale Größe einer Antwort, die im Ausgabecache gespeichert werden kann, auf 512 Kilobytes festgelegt.

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

Beispielcode

In den folgenden Beispielen wird die Seitenausgabezwischenspeicherung für Dateien mit der Dateinamenerweiterung „.asp“ konfiguriert. Außerdem wird IIS so konfiguriert, dass die Zwischenspeicherung im Benutzermodus und im Kernelmodus erfolgt, bis sich ASP-Dateien ändern.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /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 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()