Übersicht über das Zwischenspeichern in ASP.NET

Aktualisiert: November 2007

Durch Ablegen von Daten im Speicher, auf die häufig zugegriffen wird und deren Erstellung erhebliche Verarbeitungszeit erfordert, kann die Leistung einer Anwendung erheblich gesteigert werden. Wenn z. B. große Datenmengen mit komplexer Logik durch die Anwendung verarbeitet und die Daten in Form eines Berichts zurückgegeben werden, auf den Benutzer häufig zugreifen, ist es effizient, den Bericht nicht bei jeder Benutzeranforderung neu zu erstellen. Auch Anwendungsseiten, die komplexe Daten verarbeiten, aber nur unregelmäßig aktualisiert werden, sollten aus Effizienzgründen nicht bei jeder Anforderung vom Server neu erstellt werden.

Zur Verbesserung der Anwendungsleistung in solchen Situationen stellt ASP.NET zwei grundlegende Mechanismen zum Zwischenspeichern bereit. Erstens, der Anwendungscache: Mit der Zwischenspeicherung in Anwendungen können Sie Daten zwischenspeichern, die Sie selbst generiert haben, z. B. einDataSet oder ein Geschäftsobjekt für einen benutzerdefinierten Bericht. Zweitens, der Seitenausgabecache: Durch die Zwischenspeicherung der Seitenausgabe werden ausgegebene Seiten gespeichert und wieder verwendet, statt die Seite bei einer wiederholten Benutzeranforderung erneut auszugeben.

Anwendungscache

Der Anwendungscache bietet eine programmgesteuerte Möglichkeit, beliebige Daten mit Schlüssel-Wert-Paaren im Arbeitsspeicher zu speichern. Der Einsatz des Anwendungscaches ist ähnlich wie die Verwendung des Anwendungszustands. Anders jedoch als beim Anwendungszustand sind die Daten im Anwendungscache flüchtig, d. h., sie bleiben nicht bis zum Ende der Anwendung im Speicher. Der Vorteil bei der Verwendung des Anwendungscaches ist, dass ASP.NET den Cache verwaltet und Elemente entfernt, wenn diese ablaufen oder ungültig werden, oder wenn zu wenig Arbeitsspeicher verfügbar ist. Sie können den Anwendungscache auch so konfigurieren, dass die Anwendung benachrichtigt wird, wenn ein Element entfernt wird. Weitere Informationen finden Sie unter Zwischenspeichern von Anwendungsdaten.

Bei Verwendung des Anwendungscaches wird bei jedem Zugriff auf ein Element geprüft, ob es sich im Cache befindet. Ist dies der Fall, wird das Element im Cache verwendet. Ist das Element nicht vorhanden, kann es neu erstellt und in den Cache eingefügt werden. Diese Vorgehensweise stellt sicher, dass immer die aktuellen Daten im Cache vorhanden sind.

Weitere Informationen finden Sie unter Gewusst wie: Abrufen von Werten von zwischengespeicherten Elementen.

Seitenausgabecache

Der Seitenausgabecache speichert den Inhalt einer verarbeiteten ASP.NET-Seite im Arbeitsspeicher. So kann ASP.NET einem Client eine Seitenantwort senden, ohne erneut den Lebenszyklus der Seitenverarbeitung durchlaufen zu müssen. Die Zwischenspeicherung der Seitenausgabe ist besonders nützlich für Seiten, die sich nicht oft ändern, deren Erstellung aber erheblichen Verarbeitungsaufwand erfordert. Wenn Sie beispielsweise eine Webseite mit hohem Datenverkehrsaufkommen erstellen, die selten zu aktualisierende Daten anzeigt, lässt sich die Leistung der Seite durch das Zwischenspeichern der Seitenausgabe erheblich steigern. Die Zwischenspeicherung von Seiten kann für jede Seite individuell konfiguriert werden. Sie können aber auch Cacheprofile in der Datei Web.config erstellen, sodass Sie Cacheeinstellungen nur einmal definieren und dann für mehrere Seiten verwenden können.

Die Zwischenspeicherung der Seitenausgabe stellt zwei Modelle für die Seitenzwischenspeicherung bereit: die vollständige und die teilweise Zwischenspeicherung von Seiten. Beim vollständigen Zwischenspeichern der Seite bleibt der gesamte Inhalt einer Seite im Speicher erhalten und wird zur Erfüllung von Clientanforderungen verwendet. Bei der teilweisen Zwischenspeicherung werden Teile einer Seite zwischengespeichert, und andere Teile bleiben dynamisch. Weitere Informationen finden Sie unter Zwischenspeichern von ASP.NET-Seiten.

Für die teilweise Seitenzwischenspeicherung gibt es zwei Varianten: Steuerelementzwischenspeicherung und Ersetzung nach dem Zwischenspeichern. Mit der Steuerelementzwischenspeicherung, auch Fragmentzwischenspeicherung genannt, können Teile der Seitenausgabe zwischengespeichert werden. Dabei werden die Informationen in einem Benutzersteuerelement eingeschlossen, das anschließend als cachefähig markiert wird. So lassen sich ausgewählte Inhalte einer Seite zwischenspeichern, während die übrige Seite nicht zwischengespeichert und deshalb jedes Mal neu erstellt wird. Wenn Sie beispielsweise eine Seite erstellen, die größtenteils dynamischen Inhalt (z. B. Börseninformationen) anzeigt, aber auch statische Abschnitte (z. B. wöchentliche Zusammenfassungen) enthält, dann können Sie diese statischen Abschnitte in Benutzersteuerelemente einbinden und diese für die Zwischenspeicherung zulassen.

Postcacheersetzung ist genau das Gegenteil. Die ganze Seite wird zwischengespeichert, aber Fragmente innerhalb der Seite sind dynamisch. Wenn Sie beispielsweise eine Seite erstellen, die für einen festgelegten Zeitraum statisch ist, können Sie die Zwischenspeicherung für die gesamte Seite festlegen. Wenn Sie der Seite ein Label-Steuerelement hinzugefügt haben, das den Benutzernamen anzeigt, zeigt das Label bei jeder Seitenaktualisierung und für jeden Benutzer gleichermaßen den Namen des Benutzers, der die Seite vor ihrer Zwischenspeicherung angefordert hatte. Mit der Postcacheersetzung können Sie jedoch die Seite für die Zwischenspeicherung konfigurieren, dabei aber einzelne Abschnitte der Seite von der Speicherung ausnehmen. In diesem Fall könnten Sie also die Label-Steuerelemente einem nicht zu speichernden Abschnitt hinzufügen, sodass sie für jeden einzelnen Benutzer und Seitenaufruf dynamisch erstellt werden. Weitere Informationen finden Sie unter Zwischenspeichern von Teilen einer ASP.NET-Seite.

Zwischenspeichern von Seiten auf Grundlage von Anforderungsparametern

Neben dem Zwischenspeichern einer einzelnen Seitenversion bietet der ASP.NET-Seitenausgabecache Features zum Erstellen mehrfacher Versionen einer Seite, in Abhängigkeit von unterschiedlichen Anforderungsparametern. Weitere Informationen finden Sie unter Zwischenspeichern mehrerer Versionen einer Seite.

Automatisches Entfernen von Daten

Aus folgenden Gründen werden Daten von ASP.NET aus dem Cache entfernt:

  • Auf dem Server ist zu wenig Arbeitsspeicher verfügbar. Dies wird als Cacheaufräumverfahren bezeichnet.

  • Das Element im Cache ist abgelaufen.

  • Die Abhängigkeit des Elements hat sich geändert.

Um Sie bei der Verwaltung zwischengespeicherter Elemente zu unterstützen, kann ASP.NET die Anwendung benachrichtigen, wenn Elemente aus dem Cache entfernt werden.

Cacheaufräumverfahren

Beim Cacheaufräumverfahren werden Elemente aus dem Cache entfernt, wenn nicht ausreichend Arbeitsspeicher zur Verfügung steht. Es werden Elemente entfernt, auf die seit einiger Zeit nicht mehr zugegriffen wurde, oder solche, deren Priorität beim Hinzufügen zum Cache als niedrig eingestuft wurde. ASP.NET bestimmt anhand des CacheItemPriority-Objekts, welche Elemente zuerst zu löschen sind. Weitere Informationen finden Sie unter Gewusst wie: Hinzufügen von Elementen zum Cache.

Gültigkeitsablauf

Neben dem Cacheaufräumverfahren entfernt ASP.NET automatisch Elemente aus dem Cache, wenn ihre Gültigkeit abgelaufen ist. Wenn Sie dem Cache ein Element hinzufügen, können Sie die Dauer seiner Gültigkeit festlegen, wie in der folgenden Tabelle beschrieben.

Ablauftyp

Beschreibung

Variabler Ablauf

Gibt an, wie lange nach dem letzten Zugriff auf ein Element dessen Gültigkeit abläuft. Sie können ein Element z. B. so festlegen, dass es 20 Minuten nach dem letzten Zugriff ungültig wird.

Absoluter Ablauf

Gibt an, dass ein Element zu einem festgesetzten Zeitpunkt ungültig wird – unabhängig davon, wie oft darauf zugegriffen wird. Sie können ein Element zum Beispiel so festlegen, dass es um 18:00 Uhr oder nach Ablauf von vier Stunden ungültig wird.

Abhängigkeiten

Sie können die Lebensdauer eines Elements im Cache in Abhängigkeit von anderen Anwendungselementen (z. B. Dateien oder Datenbanken) konfigurieren. Wenn sich das Element ändert, von dem ein Cacheelement abhängt, entfernt ASP.NET das Element aus dem Cache. Wenn die Website beispielsweise einen Bericht anzeigt, den die Anwendung auf Basis einer XML-Datei erstellt, können Sie den Bericht im Cache platzieren und eine Abhängigkeit von der XML-Datei konfigurieren. Wenn sich die XML-Datei ändert, entfernt ASP.NET den Bericht aus dem Cache. Bei Anforderung des Codes durch den Bericht wird zunächst geprüft, ob der Bericht im Cache ist. Ist dies nicht der Fall, wird er vom Code neu erstellt. Dadurch ist immer eine aktuelle Version des Berichts verfügbar.

Bei der Zwischenspeicherung in ASP.NET werden die in der folgenden Tabelle aufgeführten Abhängigkeiten unterstützt.

Abhängigkeit

Beschreibung

Schlüsselabhängigkeit

Elemente im Anwendungscache werden in Schlüssel-Wert-Paaren gespeichert. Durch Schlüsselabhängigkeit kann ein Element vom Schlüssel eines anderen Elements im Anwendungscache abhängig sein. Wenn das ursprüngliche Element entfernt wird, wird auch das Element mit der Schlüsselabhängigkeit entfernt. Sie könnten zum Beispiel ein Cacheelement mit dem Namen ReportsValid hinzufügen und danach einige Berichte zwischenspeichern, die vom ReportsValid-Schlüssel abhängen. Wenn das ReportsValid-Element entfernt wird, werden auch alle abhängigen zwischengespeicherten Berichte aus dem Cache entfernt.

Dateiabhängigkeit

Ein Element im Cache ist von einer externen Datei abhängig. Wenn die Datei geändert oder gelöscht wird, wird das zwischengespeicherte Element entfernt.

SQL-Abhängigkeit

Ein Element im Cache ist von Änderungen einer Tabelle in einer Microsoft SQL Server 2005-, SQL Server 2000- oder SQL Server 7.0-Datenbank abhängig. Bei SQL Server 2005 kann ein Element von einer Zeile in einer Tabelle abhängig sein. Weitere Informationen finden Sie unter Zwischenspeichern in ASP.NET mithilfe der SqlCacheDependency-Klasse.

Zusammengesetzte Abhängigkeit

Ein Element im Cache ist durch die Verwendung der AggregateCacheDependency-Klasse von mehreren Elementen abhängig. Falls sich eine der Abhängigkeiten ändert, wird das Element aus dem Cache entfernt.

Benutzerdefinierte Abhängigkeit

Ein Element im Cache wird mit einer Abhängigkeit konfiguriert, die Sie im eigenen Code erstellen. Sie können zum Beispiel eine benutzerdefinierte Webdienst-Cacheabhängigkeit erstellen, die Daten aus dem Cache entfernt, wenn ein Aufruf eines Webdiensts einen bestimmten Wert ergibt.

Benachrichtigung über das Entfernen von Elementen aus dem Anwendungscache

Sie können benachrichtigt werden, wenn ein Element aus dem Anwendungscache entfernt wird. Bei einem Element, dessen Erstellung erhebliche Verarbeitungszeit erfordert, können Sie sich z. B. benachrichtigen lassen, wenn es aus dem Cache entfernt wird, um es sofort zu ersetzen. Dann muss der Benutzer beim nächsten Aufruf des Elements nicht auf den Verarbeitungsprozess warten. Weitere Informationen finden Sie unter Gewusst wie: Benachrichtigen einer Anwendung beim Entfernen eines Elements aus dem Cache.

Siehe auch

Aufgaben

Gewusst wie: Zwischenspeichern der Seitenausgabe mit Dateiabhängigkeiten

Konzepte

Zwischenspeichern von ASP.NET-Seiten

Zwischenspeichern von Anwendungsdaten

Zwischenspeichern in ASP.NET mithilfe der SqlCacheDependency-Klasse