Exemplarische Vorgehensweise: Verwenden der ASP.NET-Ausgabecachefunktion mit SQL Server

Aktualisiert: November 2007

In dieser exemplarischen Vorgehensweise wird veranschaulicht, wie ASP.NET-Seiten zwischengespeichert werden, die von Daten in einer SQL Server-Datenbank abhängig sind.

Die SQL-Cacheabhängigkeit ist ein erweitertes Feature der ASP.NET-Ausgabezwischenspeicherung. Mit der SQL-Cacheabhängigkeit können Seiten zwischengespeichert werden, die von Daten aus SQL Server-Tabellen abhängig sind. SQL Server und ASP.NET können so konfiguriert werden, dass Seitenanforderungen zwischengespeichert werden. Dadurch wird die Serverauslastung verringert, während die Daten, von denen die Seite abhängig ist, in SQL Server aktualisiert werden. SQL-Cacheabhängigkeit wird für Daten verwendet, die verhältnismäßig statisch bleiben, z. B. Informationen zu Produktkatalogen oder zur benutzerdefinierten Registrierung.

Zu den Aufgaben in dieser exemplarischen Vorgehensweise gehören:

  • Erstellen und Konfigurieren einer Seite zum Anzeigen von Daten aus der Datenbank Northwind

  • Aktivieren einer Datenbank für die SQL-Cachebenachrichtigung

  • Angeben der SQL-Cacheabhängigkeit auf der Seite und in der Datei Web.config

  • Vornehmen von Änderungen an der Datenbank Northwind und Anzeigen des Zwischenspeicherungsverhaltens

Vorbereitungsmaßnahmen

Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:

  • Zugriff auf SQL Server 2000 oder SQL Server 2005 über die Datenbank Northwind.

  • Zugriff auf die Northwind-Datenbank in SQL Server. Informationen über das Downloaden und Installieren der SQL Server-Beispieldatenbank Northwind finden Sie auf der Microsoft SQL Server-Website unter Installing Sample Databases.

    Hinweis:

    Wenden Sie sich an den Serveradministrator, wenn Sie Informationen zur Anmeldung an dem Computer benötigen, auf dem SQL Server ausgeführt wird.

  • Microsoft Data Access Components (MDAC), Version 2.7 oder höher.

    Wenn Sie Windows XP oder Windows Server 2003 verwenden, verfügen Sie bereits über MDAC 2.7. Wenn Sie jedoch Windows 2000 verwenden, müssen Sie möglicherweise die bereits auf dem Computer installierte Version von MDAC aktualisieren. Weitere Informationen finden Sie im MSDN-Artikel MDAC Installation.

  • .NET Framework, Version 2.0.

Erstellen der Website

Wenn Sie bereits eine Website in Visual Web Developer erstellt haben (siehe Exemplarische Vorgehensweise: Erstellen einer einfachen Webseite in Visual Web Developer), können Sie diese Website verwenden und mit dem Abschnitt "Aktivieren der Cachebenachrichtigung für SQL Server" weiter unten in dieser exemplarischen Vorgehensweise fortfahren. Erstellen Sie andernfalls wie folgt eine neue Website und eine neue Seite.

So erstellen Sie eine Dateisystem-Website

  1. Öffnen Sie Visual Web Developer.

  2. Klicken Sie im Menü Datei nacheinander auf Neu und auf Website. (Klicken Sie in Visual Web Developer Express Edition im Menü Datei zuerst auf Neu und anschließend auf Website.)

    Das Dialogfeld Neue Website wird angezeigt.

  3. Klicken Sie unter Von Visual Studio installierte Vorlagen auf ASP.NET-Website.

  4. Geben Sie im Feld Speicherort den Namen des Ordners ein, in dem die Seiten der Website gespeichert werden sollen.

    Geben Sie beispielsweise den Ordnernamen C:\\WebSites ein.

  5. Klicken Sie in der Liste Sprache auf die Programmiersprache, in der Sie arbeiten möchten.

  6. Klicken Sie auf OK.

    Visual Web Developer erstellt den Ordner und eine neue Seite mit dem Namen Default.aspx.

Aktivieren der Cachebenachrichtigung für SQL Server

Sie müssen SQL Server so konfigurieren, dass ASP.NET von Änderungen an abhängigen Daten ordnungsgemäß benachrichtigt wird. Zum Konfigurieren des Servers benötigen Sie Administratorrechte.

So aktivieren Sie die Cachebenachrichtigung für SQL Server

  1. Zeigen Sie im Startmenü von Windows auf Alle Programme, zeigen Sie auf Zubehör, und klicken Sie dann auf Eingabeaufforderung, um ein Eingabeaufforderungsfenster zu öffnen.

  2. Suchen Sie die ausführbare Datei Aspnet_regsql.exe auf dem Laufwerk. Diese Datei wird mit .NET Framework, Version 2.0, am folgenden Speicherort installiert:

    %windir%\Microsoft.NET\Framework\FrameworkVersion
    

    Stellen Sie sicher, dass %windir% das Windows-Verzeichnis darstellt und dass .NET Framework, Version 2.0, oder höher vorliegt. Der Pfad kann beispielsweise folgendermaßen aussehen:

    C:\WINDOWS\Microsoft.NET\Framework\v2.0.40217
    
  3. Verwenden Sie den folgenden Befehl, um die Cachebenachrichtigung für die Tabelle Employees in der Datenbank Northwind zu aktivieren:

    aspnet_regsql.exe -S <Server> -U <Username> -P <Password> -ed -d Northwind -et -t Employees
    
    Hinweis:

    Sie benötigen entweder Administratorrechte oder ein administratives Konto mit entsprechendem Kennwort. Wenn Sie nicht über diese Informationen verfügen, wenden Sie sich an den Datenbankadministrator.

    Eine Meldung wird angezeigt, die angibt, ob die Datenbank erfolgreich aktiviert wurde oder ob ein Fehler aufgetreten ist. Bei folgender Meldung war die Aktivierung erfolgreich:

    Enabling the table for SQL cache dependency.
    ..
    Finished.
    

Hinzufügen einer Datenverbindung zum Projekt

Sie müssen der Datenbank Northwind eine Verbindung hinzufügen, um die SQL Server-Datenbank in Visual Web Developer zu verwenden.

So fügen Sie dem Projekt eine Datenquelle hinzu

  1. Klicken Sie im Server-Explorer (Datenbank-Explorer in Visual Web Developer Express Edition), mit der rechten Maustaste auf Datenverbindungen, und klicken Sie dann auf Verbindung hinzufügen.

    Hinweis:

    Der Server-Explorer (Datenbank-Explorer in Visual Web Developer Express Edition) wird i. d. R. hinter dem Projektmappen-Explorer angedockt.

    Wenn der Server-Explorer (Datenbank-Explorer in Visual Web Developer Express Edition) nicht sichtbar ist, klicken Sie im Menü Ansicht auf Server-Explorer (Datenbank-Explorer in Visual Web Developer Express Edition).

  2. Wenn das Dialogfeld Datenquelle auswählen angezeigt wird, gehen Sie wie folgt vor:

    1. Klicken Sie in der Liste Datenquelle auf Microsoft SQL Server.

    2. Klicken Sie in der Liste Datenanbieter auf .NET Framework-Datenanbieter für SQL Server.

    3. Klicken Sie auf Weiter.

  3. Stellen Sie im Dialogfeld Verbindung hinzufügen die Details (Servername, Anmeldeinformationen usw.) für die Datenbank bereit, und wählen Sie dann die Datenbank Northwind aus.

  4. Klicken Sie auf OK.

Hinzufügen von Timestamps und Daten zur Webseite

Sie können jetzt eine Webseite erstellen, um die Zwischenspeicherung zu veranschaulichen. In diesem Abschnitt werden ein Timestamp zum Nachverfolgen der Häufigkeit der Seitenerstellung und ein GridView-Steuerelement zum Anzeigen der Tabelle Employees der Datenbank Northwind hinzugefügt.

So fügen Sie der Webseite einen Timestamp und Daten hinzu

  1. Wechseln Sie zur Seite Default.aspx, oder öffnen Sie sie.

  2. Wechseln Sie in die Entwurfsansicht.

  3. Ziehen Sie in der Toolbox aus der Gruppe Standard ein Label-Steuerelement auf die Seite, sodass der Standardname Label1 beibehalten wird.

  4. Erweitern Sie im Server-Explorer (Datenbank-Explorer in Visual Web Developer Express Edition) den Eintrag Datenverbindungen.

  5. Erweitern Sie den Knoten für die zuvor erstellte Datenverbindung.

  6. Erweitern Sie den Knoten Tabellen.

  7. Ziehen Sie die Tabelle Employees auf die Seite.

    Visual Web Designer erstellt ein GridView-Steuerelement, das für die Verwendung der von Ihnen ausgewählten Verbindung und Tabelle konfiguriert ist.

  8. Klicken Sie im Menü GridView-Aufgaben auf Datenquelle konfigurieren.

    Im ersten Schritt des Assistenten zum Konfigurieren von Datenquellen wird der Standardname NorthwindConnectionString1 für die Verbindungszeichenfolge angezeigt.

  9. Klicken Sie auf Weiter.

  10. Wählen Sie im Bereich Select-Anweisung konfigurieren die Option Spalten von einer Tabelle oder Ansicht angeben aus.

  11. Klicken Sie in der Liste Name auf Employees.

  12. Wählen Sie in der Liste Spalten die Spalten EmployeeID, LastName und FirstName aus.

  13. Klicken Sie auf Weiter.

  14. Klicken Sie auf Fertig stellen.

    Visual Web Designer konfiguriert das GridView-Steuerelement, um die von Ihnen ausgewählten Daten anzuzeigen.

    Hinweis:

    Wenn Sie in einer Meldung gefragt werden, ob die Felder und Schlüssel für das GridView-Steuerelement aktualisiert werden sollen, klicken Sie auf Ja.

  15. Doppelklicken Sie auf einen leeren Teil der Seite**.**

    Der Designer generiert eine Page_Load-Methode und wechselt die Ansichten.

  16. Fügen Sie den folgenden hervorgehobenen Code hinzu, um einen Timestamp für die Seitenerstellung anzuzeigen:

    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As System.EventArgs) _
            Handles Me.Load
         Label1.Text = System.DateTime.Now
    End Sub
    
    protected void Page_Load(Object sender, System.EventArgs e)
    {
         Label1.Text = System.DateTime.Now.ToString();
    }
    
  17. Speichern Sie die Datei.

Testen der Seite ohne Zwischenspeicherung

Sie können die Seite nun ausführen und das Verhalten ohne Zwischenspeicherung beobachten. Die Seite wird geladen, und die aktuelle Serverzeit wird angezeigt. Anschließend werden Daten abgerufen und auf der Seite platziert.

So testen Sie die Seite ohne Zwischenspeicherung

  1. Drücken Sie STRG+F5, um die Seite auszuführen.

  2. Aktualisieren Sie die Seite im Browser.

    Beachten Sie, dass der Timestamp bei jeder Seitenaktualisierung geändert wird. Die Daten bleiben jedoch unverändert.

Konfigurieren der Webseite für die Zwischenspeicherung

In diesem Teil der exemplarischen Vorgehensweise wird die Seite auf der Grundlage der Tabelle Employees und der Datenbank Northwind für SQL-Cacheabhängigkeit konfiguriert.

So konfigurieren Sie die Webseite für die Zwischenspeicherung

  1. Wechseln Sie in die Quellansicht.

  2. Fügen Sie am oberen Rand der Seite die folgende Direktive hinzu, um die Abhängigkeit anzugeben:

    <%@ OutputCache Duration="3600" SqlDependency="Northwind:Employees" VaryByParam="none" %>
    

Das VaryByParam-Attribut gibt an, ob Seitenparameter (z. B. Abfragezeichenfolgen oder gesendete Werte) bei der Zwischenspeicherung von ASP.NET berücksichtigt werden sollen. Wenn VaryByParam auf none festgelegt ist, werden keine Parameter berücksichtigt. Allen Benutzern wird dann unabhängig von weiteren bereitgestellten Parametern dieselbe Seite gesendet. Das Festlegen von VaryByParam auf * (Sternchen) bedeutet, dass für jede eindeutige Kombination von Anforderungsparametern eine eindeutige Seite zwischengespeichert wird. Das Festlegen von VaryByParam auf * bewirkt jedoch, dass viele verschiedene Versionen der Seite zwischengespeichert werden. Wenn die für das Variieren der Zwischenspeicherung erforderlichen Parameter bekannt sind, ist es ratsam, diese im VaryByParam-Attribut explizit anzugeben. Weitere Informationen finden Sie unter Zwischenspeichern mehrerer Versionen einer Seite.

Festlegen der Zwischenspeicherungskonfiguration in der Datei Web.config.

Zusätzlich zur OutputCache-Deklaration auf der Webseite (vorheriger Abschnitt) müssen die Zwischenspeicherungsdetails in der Datei Web.config angegeben werden.

So erstellen und aktualisieren Sie die Datei Web.config

  1. Wenn die Website bereits über die Datei Web.config verfügt, fahren Sie mit Schritt 4 fort.

  2. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Website, und klicken Sie anschließend auf Neues Element hinzufügen.

  3. Klicken Sie im Dialogfeld Element hinzufügen auf die Option Webkonfigurationsdatei, und klicken Sie dann auf Hinzufügen.

    Vergewissern Sie sich, dass der Name Web.config verwendet wird.

  4. Fügen Sie der Datei Web.config die folgende XML als untergeordnetes Element des system.web-Elements hinzu:

    <!-- caching section group -->
    <caching>
      <sqlCacheDependency enabled = "true" pollTime = "1000" >
        <databases>
          <add name="Northwind" 
             connectionStringName="NorthwindConnectionString1"
             pollTime = "1000"
          />
        </databases>
      </sqlCacheDependency>
    </caching>
    
    Hinweis:

    Der Name NorthwindConnectionString1 der Verbindungszeichenfolge wurde bereits zuvor bei der Erstellung der Datenverbindung erstellt. Wenn die Verbindungszeichenfolge über einen anderen Namen verfügt, ersetzen Sie diesen.

    Hinweis:

    Die in der Verbindungszeichenfolge angegebenen Anmeldeinformationen des Kontos müssen über genügend Berechtigungen verfügen, um die Datenbank abzurufen.

  5. Speichern Sie die Datei, und schließen Sie sie dann.

Testen der Seite mit Zwischenspeicherung

Wenn die Zwischenspeicherung aktiviert ist, führt das Aktualisieren der Seite nicht mehr zu einem aktualisierten Timestamp oder einer Datenbankabfrage, weil ASP.NET die Seitenanforderungen aus dem Cache erfüllt.

So testen Sie die Seite mit Zwischenspeicherung

  • Drücken Sie STRG+F5, um die Seite auszuführen.

    Beachten Sie, dass der Timestamp bei jeder Seitenaktualisierung unverändert bleibt. Die Seite wird aus dem Cache abgerufen.

Ändern der Daten

Sie können die Daten in der Datenbank jetzt ändern und überprüfen, ob der Cache ungültig ist und eine neue Seite erstellt wird.

So ändern Sie die Daten

  1. Erweitern Sie im Server-Explorer (Daten-Explorer in Visual Web Developer Express Edition) den Knoten Datenverbindungen.

  2. Erweitern Sie die zuvor erstellte Verbindung.

  3. Erweitern Sie den Knoten Tabellen.

  4. Klicken Sie mit der rechten Maustaste auf Employees, und klicken Sie dann auf Tabellendaten anzeigen.

  5. Aktualisieren Sie die Datenbank, indem Sie ein Feld in der Datentabelle bearbeiten, das für die Anzeige auf der Webseite vorgesehen ist.

    Wahlweise können Sie auch den SQL-Bereich verwenden (wenn der SQL-Bereich nicht angezeigt wird, klicken Sie im Menü Abfrage-Designer auf Bereich und dann auf SQL). Geben Sie den gewünschten SQL-Befehl direkt ein, und klicken Sie dann auf der Symbolleiste Abfrage-Designer auf die Schaltfläche SQL ausführen. Führen Sie beispielsweise folgenden Befehl aus:

    UPDATE dbo.Employees SET LastName = 'Doe' WHERE (EmployeeID = 5)
    

    Dadurch wird der Name von Mitarbeiter 5 in Doe geändert.

  6. Schließen Sie die Datenansicht.

Testen der SQL-Cacheabhängigkeit

Sie können jetzt die Seite testen, um zu überprüfen, ob die Daten und der Timestamp geändert wurden.

So testen Sie SQL-Cacheabhängigkeit

  1. Drücken Sie STRG+F5, um die Seite auszuführen.

    Beachten Sie, dass der Timestamp geändert wurde und die neuen Daten angezeigt werden.

  2. Drücken Sie STRG+F5, um die Seite erneut auszuführen.

    Dieses Mal bleibt der Timestamp unverändert, da die Daten nicht geändert wurden. Jetzt wird die Seite noch einmal aus dem Cache abgerufen.

Nächste Schritte

Seiten können auch mithilfe anderer Parameter zwischengespeichert werden. Informationen hierzu finden Sie unter Exemplarische Vorgehensweise: Verwenden der Ausgabecachefunktion zur Verbesserung der Websiteleistung. Weitere Informationen über Datenzugriffe erhalten Sie unter Exemplarische Vorgehensweise: Grundlegender Datenzugriff auf Webseiten.

Siehe auch

Konzepte

Zwischenspeichern in ASP.NET mithilfe der SqlCacheDependency-Klasse

Referenz

DefaultHttpCachePolicy

OutputCacheSettingsSection