Exemplarische Vorgehensweise: Verwenden der Ausgabecachefunktion zur Verbesserung der Websiteleistung
Aktualisiert: November 2007
Leistung ist ein wichtiger Aspekt jeder Webanwendung. Die Verringerung der Verarbeitungsleistung, die bei einem Webserver erforderlich ist, um den einzelnen Anforderungen gerecht zu werden, führt zu schnelleren Antwortzeiten, d. h., die Fähigkeit des Servers, mehrere Anforderungen gleichzeitig zu behandeln, wird erhöht. Gleichzeitig kommt es zu einer geringeren Auslastung von Zwischen- und Back-End-Datensystemen.
Eine Möglichkeit für eine bessere Leistung mit ASP.NET liegt in der Verwendung der Ausgabecachefunktion, um die Serverarbeitsauslastung zu verringern. Die Ausgabecachefunktion stellt eine Optimierung dar, mit der die Antwortzeit des Webservers reduziert wird.
Wenn ein Browser eine ASP.NET-Seite anfordert, erstellt ASP.NET i. d. R. eine Instanz der Seite, führt allen Code auf der Seite sowie Datenbankabfragen (falls vorhanden) aus, assembliert die Seite dynamisch und sendet anschließend die resultierende Ausgabe an den Browser. Mithilfe der Ausgabecachefunktion kann ASP.NET eine vorher bearbeitete Kopie einer Seite senden, anstatt diesen Prozess für jede Anforderung auszuführen. Auf diese Weise wird die Verarbeitungsleistung durch den Webserver verringert, die Leistung erhöht und eine größere Skalierbarkeit ermöglicht.
Zu den Aufgaben in dieser exemplarischen Vorgehensweise gehören:
Zwischenspeichern von Seiten mithilfe einer Seitendirektive, um die gesamte Seite in der Ausgabe zwischenzuspeichern, unabhängig vom Browsertyp, einzelnen Parametern oder Daten.
Verwenden von Cacheprofilen auf Anwendungsebene, ein Feature, mit dem die Ausgabecachefunktions-Einstellungen für eine gesamte Anwendung definiert werden können. Einzelne Seiten können sich Profilen zuordnen, die in der Datei Web.config enthalten sind. Dies ermöglicht eine zentrale Steuerung der Zwischenspeicherung anstelle der Bearbeitung jeder einzelnen Seite.
Zwischenspeichern basierend auf den einzelnen Parametern, die mit der Seite gesendet werden.
Vorbereitungsmaßnahmen
Für die Durchführung dieser exemplarischen Vorgehensweise benötigen Sie Folgendes:
Visual Web Developer (Visual Studio).
Microsoft .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 nächsten Thema in dieser exemplarischen Vorgehensweise fortfahren. Erstellen Sie andernfalls eine neue Website und eine neue Webseite, indem Sie folgende Schritte ausführen.
So erstellen Sie eine Dateisystem-Website
Öffnen Sie Visual Web Developer.
Klicken Sie im Menü Datei auf Neue Website. (Klicken Sie in Visual Web Developer Express Edition im Menü Datei auf Neu, und klicken Sie dann auf Website.)
Das Dialogfeld Neue Website wird angezeigt.
Wählen Sie unter Von Visual Studio installierte Vorlagen die Option ASP.NET-Website aus.
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.
Wählen Sie in der Liste Sprache die Programmiersprache aus, in der Sie arbeiten möchten.
Klicken Sie auf OK.
Visual Web Developer erstellt den Ordner und die neue Seite Default.aspx.
Konfigurieren der Zwischenspeicherung auf Seitenebene
Diese Prozedur bietet eine Einführung in die Grundlagen der Seitenzwischenspeicherung. In dieser Prozedur fügen Sie der Seite ein Label-Steuerelement hinzu, das anzeigt, wann die Seite erstellt wurde. Anschließend konfigurieren Sie die Seite, die zwischengespeichert werden soll. Durch das Anzeigen der Erstellungszeit der Seite kann überprüft werden, dass die Seitenanforderung durch den Rückgriff auf den Zwischenspeicher erfüllt wird.
So konfigurieren Sie die Zwischenspeicherung auf Seitenebene
Öffnen Sie die Seite Default.aspx, oder wechseln Sie zu dieser Seite. (Alternativ kann auch jede andere Seite der Website verwendet werden.)
Wechseln Sie in die Entwurfsansicht.
Ziehen Sie aus der Gruppe Standard der Toolbox ein Label-Steuerelement auf die Seite, und behalten Sie den Standardnamen Label1 bei.
Doppelklicken Sie auf eine freie Stelle auf der Seite.
Der Designer wechselt zum Code-Editor und erstellt eine Page_Load-Methode.
Fügen Sie der Methode folgenden markierten Code hinzu:
Protected Sub Page_Load(ByVal sender As Object, _ ByVal e As System.EventArgs) Label1.Text = System.DateTime.Now.ToString() End Sub
protected void Page_Load(Object sender, System.EventArgs e) { Label1.Text = System.DateTime.Now.ToString(); }
Drücken Sie STRG+F5, um die Seite auszuführen.
Wenn die Seite im Browser angezeigt wird, werden das aktuelle Datum und die aktuelle Uhrzeit angezeigt. Klicken Sie auf die Aktualisierungsschaltfläche des Browsers, und beachten Sie, dass der Timestamp jedes Mal geändert wird.
Schließen Sie den Browser.
Fügen Sie am Anfang der Seite die folgende @ OutputCache-Direktive ein:
<%@ OutputCache Duration="15" VaryByParam="none" %>
Mit dieser Direktive wird die Seite konfiguriert, die zwischengespeichert werden soll. Das Duration-Attribut gibt an, dass die Seite 15 Sekunden lang im Cache bleibt.
Drücken Sie STRG+F5, um die Seite erneut auszuführen.
Aktualisieren Sie die Seite mehrmals.
Beachten Sie, dass die Zeitanzeige nur alle 15 Sekunden aktualisiert wird, unabhängig davon, wie oft der Browser aktualisiert wird. Dies ist darauf zurückzuführen, dass die Anforderung durch den Rückgriff auf den Cache erfüllt wird, bis die Zeitdauer verstrichen ist. Danach wird der Seitencode erneut ausgeführt.
Festlegen der Zwischenspeicherung auf Anwendungsebene
In der vorherigen Prozedur haben Sie die Zwischenspeicherung für eine einzelne Seite konfiguriert. Unter bestimmten Umständen soll die Zwischenspeicherung möglicherweise für alle Seiten der Website konfiguriert werden. Möglicherweise sollen auch verschiedene Zwischenspeicherungsregeln (Profile) erstellt und die Cacheprofile auf Gruppen einzelner Seiten angewendet werden. Durch das Festlegen der Zwischenspeicherung auf Anwendungsebene kann das Zwischenspeicherungsverhalten mit einer einzelnen Konfigurationsdatei geändert werden, anstatt die @ OutputCache-Direktive einzelner Seiten zu bearbeiten. In der folgenden Prozedur richten Sie ein einfaches Cacheprofil ein und verwenden es für die Seite, mit der Sie gerade gearbeitet haben.
So konfigurieren Sie die Zwischenspeicherung auf Anwendungsebene
Wenn Sie bereits über eine Datei Web.config verfügen, fahren Sie mit Schritt 4 fort.
Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Namen der Website, und klicken Sie anschließend auf Neues Element hinzufügen.
Klicken Sie im Dialogfeld Element hinzufügen auf die Option Webkonfigurationsdatei, und klicken Sie dann auf Hinzufügen.
Stellen Sie sicher, dass Sie den Namen Web.config verwenden.
Fügen Sie das folgende XML als untergeordnetes Element des system.web-Elements hinzu:
<!-- caching section group --> <caching> <outputCacheSettings> <outputCacheProfiles> <add name="AppCache1" enabled="true" duration="60"/> </outputCacheProfiles> </outputCacheSettings> </caching>
Speichern Sie die Datei, und schließen Sie sie dann.
Öffnen Sie die Webseite, die bearbeitet wurde, oder wechseln Sie zu dieser Seite, und wechseln Sie dann zur Quellansicht.
Ändern Sie die @ OutputCache-Direktive wie folgt:
<%@ OutputCache CacheProfile="AppCache1" VaryByParam="none" %>
Drücken Sie STRG+F5, um die Seite auszuführen.
Aktualisieren Sie die Seite mehrmals.
Dieses Mal bleibt das Datum während der im Cacheprofil angegebenen Dauer unverändert, d. h. 60 Sekunden.
Zwischenspeicherung mithilfe von Parametern
Die @ OutputCache-Direktive erfordert das Festlegen des bisher auf "none" festgelegten VaryByParam-Attributs. Mit dem VaryByParam-Attribut können Sie die Zwischenspeicherung so konfigurieren, dass ASP.NET je nach Parameter, z. B. Abfragezeichenfolgen, Formularwerte, Anforderungsheader usw., verschiedene Versionen einer Seite speichert.
Sie können beispielsweise Cacheparameter auf einer Seite verwenden, auf der die Wetterbedingungen für ausgewählte Städte angezeigt und die Wetterdaten nur alle drei Stunden aktualisiert werden. In diesem Szenario soll für jede Stadt eine separate Version der Seite zwischengespeichert werden. Dazu muss der Cacheparameter so festgelegt werden, dass er je nach Abfragezeichenfolgen-Parameter variiert.
In der folgenden Prozedur ändern Sie das der Seite hinzugefügte Label-Steuerelement, sodass die Uhrzeit mit einem farbigen Hintergrund angezeigt wird. Die Farbe kann geändert werden, indem Sie mithilfe eines TextBox-Steuerelements einen Farbnamen eingeben.
Wenn Sie die Seite senden, wird die eingegebene Farbe als Sendedaten übermittelt, und die Farbe hinter dem Label-Steuerelement wird geändert. Wenn eine neue Farbe angefordert wird (wenn die Seite neue Sendedaten enthält), wird die Seite erneut generiert, und der Timestamp wird aktualisiert. Aufeinanderfolgende Anforderungen derselben Farbe bewirken jedoch, dass die zwischengespeicherte Seite zurückgegeben wird (bis das angegebene Zeitintervall überschritten wurde).
So führen Sie die Zwischenspeicherung auf der Grundlage von Parametern aus
Öffnen Sie die Seite, oder wechseln Sie zu der Seite, die Sie bearbeitet haben.
Wechseln Sie in die Entwurfsansicht.
Ziehen Sie aus der Gruppe Standard der Toolbox ein TextBox-Steuerelement auf die Seite, und legen Sie dessen ID auf Color fest.
Ziehen Sie ein Button-Steuerelement auf die Seite, und behalten Sie den Standardnamen Button1 bei.
Legen Sie die Text-Eigenschaft des Button-Steuerelements auf "Change Color" fest.
Doppelklicken Sie auf das Button-Steuerelement, um einen Click-Ereignishandler zu erstellen.
Fügen Sie folgenden markierten Code in der Methode ein:
Protected Sub Button1_Click(ByVal sender As Object, _ ByVal e As System.EventArgs) Handles Button1.Click Label1.BackColor = _ System.Drawing.Color.FromName(Server.HtmlEncode(Color.Text)) End Sub
protected void Button1_Click(Object sender, System.EventArgs e) { Label1.BackColor = System.Drawing.Color.FromName(Server.HtmlEncode(Color.Text)); }
Legen Sie das defaultbutton-Attribut des form-Elements auf Button1 fest.
Hierdurch wird der Click-Ereignishandler für die Schaltfläche aufgerufen, wenn die EINGABETASTE gedrückt wird.
Ersetzen Sie die @ OutputCache-Direktive durch folgende Version:
<%@ OutputCache Location="Server" Duration="60" VaryByParam="Color" %>
Drücken Sie STRG+F5, um die Seite auszuführen.
Geben Sie im Textfeld einen Farbnamen ein, z. B. "red" oder "blue", und klicken Sie auf Farbe ändern.
ASP.NET speichert im Cache eine Version der Seite, auf der die von Ihnen angegebene Farbe verwendet wird.
Aktualisieren Sie die Seite mehrmals.
Wenn Sie keinen neuen Farbnamen eingeben, bleiben die Uhrzeit und das Datum mindestens eine Minute lang entsprechend der Angaben durch das Duration-Attribut der @ OutputCache-Direktive unverändert.
Geben Sie eine neue Farbe ein, z. B. "green" oder "orchid", und senden Sie dann die Seite.
Dieses Mal wird die Uhrzeitaktualisierung zusammen mit der neuen Farbe angezeigt.
Nächste Schritte
In dieser exemplarischen Vorgehensweise wurden grundlegende Konzepte für die Zwischenspeicherung von ASP.NET-Seiten veranschaulicht. Möglicherweise möchten Sie sich mit den folgenden zusätzlichen Zwischenspeicherungsmethoden vertraut machen:
Geben Sie die Zwischenspeicherung programmgesteuert an, anstatt Seitendeklarationen zu verwenden. Sie können beispielsweise in der Page_Load-Methode auf die HttpCachePolicy-Klasse zugreifen (über Page.Response.Cache) und die Werte und das Verhalten entsprechend festlegen.
Datengebundene Seiten müssen zwischengespeichert werden, sodass sie nur beim Ändern der Daten, von denen sie abhängig sind, erneut generiert werden. Weitere Informationen finden Sie unter Exemplarische Vorgehensweise: Verwenden der ASP.NET-Ausgabecachefunktion mit SQL Server.
Siehe auch
Aufgaben
Exemplarische Vorgehensweise: Verwenden der ASP.NET-Ausgabecachefunktion mit SQL Server
Konzepte
Übersicht über das Zwischenspeichern in ASP.NET