Zwischenspeichern in ASP.NET mithilfe der SqlCacheDependency-Klasse
Aktualisiert: November 2007
In ASP.NET können Sie mit der SqlCacheDependency-Klasse für ein Element im Cache eine Abhängigkeit von einer Tabelle oder Zeile in einer Datenbank festlegen. Bei einer Änderung in der Tabelle oder in einer bestimmten Zeile wird das Element mit der Abhängigkeit ungültig und wird aus dem Cache entfernt. Sie können eine Abhängigkeit von einer Tabelle in SQL Server 7, SQL Server 2000 und SQL Server 2005 festlegen. Mit SQL Server 2005 können Sie außerdem eine Abhängigkeit von einem bestimmten Datensatz festlegen.
Der Einsatz der Zwischenspeicherung zusammen mit einer SQL-Abhängigkeit kann die Anwendungsleistung in bestimmten Szenarios dramatisch erhöhen. Stellen Sie sich zum Beispiel vor, dass Sie eine E-Commerce-Anwendung erstellen, die Produktinformationen aus einer Datenbank anzeigt. Ohne Zwischenspeicherung muss die Anwendung jedes Mal die Daten von der Datenbank anfordern, wenn ein Benutzer ein Produkt anzeigen will. Sie könnten die Produktinformationen tageweise zwischenspeichern und würden so schnelle Antwortzeiten erzielen, da die Daten bereits im Speicher sind. Wenn sich die Produktinformationen jedoch ändern, könnte es passieren, dass die zwischengespeicherte Produktinformationen maximal für die Dauer eines Tages nicht aktuell ist.
Mit SQL-Cacheabhängigkeit könnten Sie die Produktinformation zwischenspeichern und eine Abhängigkeit von der Änderung einer Datenbanktabelle oder -zeile einrichten. Bei Änderung der Daten werden die Cacheelemente, die auf diesen Daten basieren, ungültig und werden aus dem Cache entfernt. Wenn dieses Datenelement bei der nächsten Anforderung nicht im Cache vorhanden ist, können Sie dem Cache die aktualisierte Version wieder hinzufügen und verfügen dann ganz sicher über die neuesten Daten.
SQL-Cacheabhängigkeit ist auch für den Seitenausgabecache verfügbar. Sie könnten zum Beispiel eine Seite mit dem Namen ViewProduct.aspx erstellen, auf der Informationen über ein bestimmtes Produkt angezeigt werden. Sie können die Zwischenspeicherungsrichtlinie dieser Seite als SQL-Abhängigkeit festlegen, wie bei einem Element, das Sie dem Cache manuell hinzufügen. Die Seite würde dann im Cache gespeichert werden, bis sich die Tabelle oder Zeile ändert, von der sie abhängig ist. Bei Änderung der Daten würde die Seite neu erstellt und wieder im Ausgabecache gespeichert werden.
Weitere Informationen finden Sie unter Übersicht über das Zwischenspeichern in ASP.NET.
Features
ASP.NET-SQL-Cacheabhängigkeit bietet folgende Features:
Sie können die SQL-Cacheabhängigkeit sowohl für den Anwendungscache als auch für den Seitenausgabecache einsetzen.
Sie können die SQL-Cacheabhängigkeit mit SQL Server 7.0 oder höher verwenden.
Sie können die SQL-Cacheabhängigkeit in einem Webgarten (mehrere Prozessoren in einem Server) oder einer Webfarm (mehrere Server zur Ausführung der gleichen Anwendung) verwenden.
Die mit der SQL-Cacheabhängigkeit verbundenen Datenbankoperationen sind einfach und stellen daher für den Server keinen großen Verarbeitungsaufwand dar.
Sie benötigen kein umfangreiches Wissen über SQL, um die SQL-Cacheabhängigkeit in einer Anwendung und in SQL Server zu konfigurieren. ASP.NET enthält Tools, die die Konfiguration automatisieren. Zusätzlich können Sie die SqlCacheDependencyAdmin-Klasse verwenden, um die SQL-Cacheabhängigkeit programmgesteuert zu konfigurieren.
SQL Server 7.0- und SQL Server 2000-Implementierung
ASP.NET implementiert ein Abfragemodell für die Cacheabhängigkeit in SQL Server 7.0 und SQL Server 2000. Ein Thread innerhalb des ASP.NET-Prozesses fragt in einem angegebenen Zeitintervall die SQL Server-Datenbank ab, um zu bestimmen, ob die Daten geändert wurden. Trifft dies zu, werden die abhängigen Cacheelemente ungültig und werden aus dem Cache entfernt. Sie können das Abfrageintervall deklarativ in der Datei Web.config der Anwendung oder programmgesteuert mit der SqlCacheDependency-Klasse angeben.
SQL-Cacheabhängigkeit ist für SQL Server 7.0 und SQL Server 2000 auf Datenänderungen auf der Tabellenebene begrenzt. ASP.NET kann so konfiguriert werden, dass Änderungen in einer Datenbanktabelle abgefragt werden, nicht aber in einer bestimmten Zeile.
Aktivieren der SQL-Zwischenspeicherung
Um die SQL-Cacheabhängigkeit in SQL Server 7.0 und SQL Server 2000 verwenden zu können, muss SQL Server entsprechend konfiguriert werden. ASP.NET stellt Dienstprogramme zum Konfigurieren der SQL-Zwischenspeicherung in SQL Server bereit. Dazu gehören ein Tool mit dem Namen Aspnet_regsql.exe und die SqlCacheDependencyAdmin-Klasse. Weitere Informationen über das Aktivieren von SQL-Cacheabhängigkeit mit SQL Server finden Sie unter Gewusst wie: Zwischenspeichern von Seitenausgaben mit Cacheschlüsselabhängigkeiten.
SQL Server 2005-Implementierung
Das Cacheabhängigkeitsmodell von SQL Server 2005 ist anders als das von SQL Server 7.0 und SQL Server 2000. In SQL Server 2005 sind für die Aktivierung der Cacheabhängigkeit keine besonderen Konfigurationseinstellungen erforderlich. Außerdem implementiert SQL Server 2005 ein Änderungsbenachrichtigungsmodell, in dem abonnierende Anwendungsserver benachrichtigt werden, und ist nicht mehr auf das Abfragemodell angewiesen, das in früheren Versionen von SQL Server erforderlich war.
Die Cacheabhängigkeit in SQL Server 2005 ist flexibler in Bezug auf die Änderungstypen, für die eine Benachrichtigung erfolgen kann. SQL Server 2005 überwacht Änderungen an dem Resultset eines bestimmten SQL-Befehls. Wenn eine Änderung in der Datenbank das Resultset dieses Befehls betrifft, wird das zwischengespeicherte Element aufgrund der Abhängigkeit ungültig. Dadurch kann SQL Server 2005 eine Benachrichtigung auf Zeilenebene bereitstellen.
Die Änderungsabfrage muss einige Anforderungen erfüllen. Sie müssen vollqualifizierte Tabellennamen angeben, einschließlich des Besitzernamens (z. B. dbo.authors). SQL 2005-Benachrichtigungen unterstützen Select-Abfragen ebenso wie gespeicherte Prozeduren, mehrfache und geschachtelte Abfragen, aber keine zusammengesetzten Operationen (z. B. COUNT(*)). Weitere Informationen über die unterstützten Abfragen sowie über die Regeln für Benachrichtigungen in SQL Server 2005 finden Sie in der SQL Server-Onlinedokumentation im Thema "Creating a Query for Notification".
Konfigurieren der SQL-Zwischenspeicherung in ASP.NET-Anwendungen
Sobald Sie SQL Server 7.0 oder SQL Server 2000 für die Cacheabhängigkeit konfiguriert bzw. in SQL Server 2005 die entsprechende Befehlsabhängigkeit erstellt haben, können Sie die Anwendung für die Verwendung von SQL-Cacheabhängigkeit wie für jede andere Cacheabhängigkeit konfigurieren. Sie können z. B. ein Cacheprofil in der Datei Web.config erstellen und dann in jeder Seite darauf verweisen, die die SQL-Cacheabhängigkeit verwenden soll. Sie können die SQL-Cacheabhängigkeit auch mit der SqlCacheDependency-Klasse programmgesteuert aktivieren. Weitere Informationen finden Sie unter Gewusst wie: Zwischenspeichern von Seitenausgaben mit Cacheschlüsselabhängigkeiten.
Siehe auch
Aufgaben
Gewusst wie: Zwischenspeichern der Seitenausgabe mit Dateiabhängigkeiten