SO WIRD'S GEMACHT: Steuerung des Seitenausgabe-Caching in ASP.NET mit Visual C# .NET

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 308375 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Dieser Artikel wurde zuvor veröffentlicht unter D308375
Dieser Artikel ist eine Übersetzung des folgenden englischsprachigen Artikels der Microsoft Knowledge Base:
308375 HOW TO: Control Page Output Caching in ASP.NET Using Visual C# .NET
In Artikel 308516 wird dieses Thema für Microsoft Visual Basic .NET behandelt.
Hinweis: Die Verwendung der hier aufgeführten Informationen sowie Makro- oder Programmcodes geschieht auf Ihre eigene Verantwortung. Microsoft stellt Ihnen diese Informationen sowie Makro- und Programmlistings ohne Gewähr auf Richtigkeit, Vollständigkeit und/oder Funktionalität sowie ohne Anspruch auf Support zur Verfügung. Die zur Verfügung gestellten Makro- und Programmierungsbeispiele sollen lediglich exemplarisch die Funktionsweise des Beispiels aufzeigen.

Weitere Informationen zu den von Microsoft angebotenen Supportoptionen finden Sie unter folgender Internetadresse:
http://support.microsoft.com/
Bitte beachten Sie: Bei diesem Artikel handelt es sich um eine Übersetzung aus dem Englischen. Es ist möglich, dass nachträgliche Änderungen bzw. Ergänzungen im englischen Originalartikel in dieser Übersetzung nicht berücksichtigt sind. Die in diesem Artikel enthaltenen Informationen basieren auf der/den englischsprachigen Produktversion(en). Die Richtigkeit dieser Informationen in Zusammenhang mit anderssprachigen Produktversionen wurde im Rahmen dieser Übersetzung nicht getestet. Microsoft stellt diese Informationen ohne Gewähr für Richtigkeit bzw. Funktionalität zur Verfügung und übernimmt auch keine Gewährleistung bezüglich der Vollständigkeit oder Richtigkeit der Übersetzung.
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Dieser Artikel beschreibt die Verwendung der @ OutputCache-Direktive zur Steuerung des Seitenausgabe-Caching in ASP.NET mit Visual C# .NET. Mit dieser Technik können Sie die am häufigsten besuchten Seiten Ihrer Website zwischenspeichern, was den Durchsatz Ihres Webservers beträchtlich erhöhen kann. Der Durchsatz wird im allgemeinen in Anforderungen pro Sekunde gemessen. Der Beispielcode in diesem Artikel zeigt die Verwendung der Attribute Duration und VaryByParam. Der Artikel enthält jedoch auch eine kurze Beschreibung anderer Ansätze, die Sie in Verbindung mit der @ OutputCache-Direktive verwenden können.

Hinweis: Es ist nicht Zweck dieses Artikels, alle Attribute der @ OutputCache-Direktive und ihre Verwendung im Detail zu beschreiben. Weitere Informationen finden Sie im Abschnitt Informationsquellen.

Voraussetzungen

  • Microsoft Windows 2000 oder Windows XP
  • Microsoft .NET Framework
  • Microsoft Internet Information Server (IIS)
  • ASP.NET Premium Edition

Einführung in die Direktive "@ OutputCache"

Um die @ OutputCache-Direktive zur Steuerung des Seitenausgabe-Caching zu verwenden, fügen Sie die Direktive einfach am Anfang der Seite hinzu. Die Methode Page.InitOutputCache übersetzt die Direktive in HttpCachePolicy-Klassenmethoden.

Die Direktive @ OutputCache enthält folgende Attribute und Einstellungen:
  • Duration: Dieses Attribut gibt an, wie lange ein Element im Speicher gehalten wird. Der Wert für Duration wird in Sekunden angegeben.
  • VaryByParam: Dieses Attribut bestimmt Cacheeinträge anhand von Get- oder Post-Parametern. Wenn z.B. eine QueryString-Variable namens testVal für das Attribut VaryByParam gesetzt ist, wird jede Seitenanforderung, die einen anderen Wert für testVal enthält, in einer separaten Seite zwischengespeichert. Der folgende Code zeigt die Syntax für das Attribut VaryByParam:
    <%@ OutputCache Duration="Seconds" VaryByParam="testVal"%>
    Hinweis: Sie können ein Sternchen angeben (*), damit alle verschiedenen Versionen des Elements zwischengespeichert werden. Sie können auch "none" angeben, wenn nur eine Version eines zwischengespeicherten Elements existiert.
  • Location: Dieses Attribut legt fest, wo das Element zwischengespeichert wird. Folgende Angaben sind möglich:
    • Any
    • Client
    • Downstream
    • Server
    • None

    Der folgende Code zeigt die Syntax für das Attribut Location:
    <%@ OutputCache Duration="Seconds" Location="Client" %>
  • Der folgende Code zeigt die Syntax für das Attribut VaryByCustom: Dieses Attribut enthält die Standardeinstellung Browser. Das bedeutet, dass für jede anfordernde Browserversion eine andere Instanz eines Elements zwischengespeichert wird. Beispiel: Sowohl Microsoft Internet Explorer 5 als auch Internet Explorer 5.5 fordern das Element an. Wenn VaryByCustom auf Browser gesetzt ist, gibt es für jede Browserversion einen Eintrag im Cache. Sie können das Caching für andere benutzerdefinierte Szenarien nicht über eine Zeichenfolge steuern. Die Zeichenfolge hat keine Bedeutung, es sei denn, Sie überschreiben die Methode HttpApplication.GetVaryByCustomString in der Datei "Global.asax" mit Code.

    Der folgende Code zeigt die Syntax für das Attribut VaryByCustom:
    <%@ OutputCache Duration="Seconds" VaryByCustom="string" %>
  • Der folgende Code zeigt die Syntax für das Attribut VaryByHeader: Dieses Attribut ermöglicht die Angabe eines bestimmten HTTP-Headerwertes als Kriterium für die verschiedenen Cacheeinträge. Der folgende Code zeigt die Syntax für das Attribut VaryByHeader:
    <%@ OutputCache Duration="60" VaryByHeader="Accept-Language" %>

Beispiel: @ OutputCache Duration

Die folgende Vorgehensweise zeigt die Verwendung des Attributs Duration beim Seitenausgabe-Caching zur Angabe der Cachingdauer für ein Element.
  1. Erstellen Sie ein neues Visual Basic ASP.NET-Anwendungsprojekt:
    1. Öffnen Sie Visual Studio .NET.
    2. Zeigen Sie im Menü Datei auf Neu und klicken Sie auf Projekt.
    3. Klicken Sie im Dialogfeld Neues Projekt hinzufügen unter Projekttypen auf Visual C#-Projekte. Klicken Sie dann unter Vorlagen auf ASP.NET-Webanwendung. Im Textfeld Name geben Sie OutputCacheDemo ein. Klicken Sie auf OK.
  2. Erstellen Sie eine neue .aspx-Seite in Visual Studio .NET:
    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten. Klicken Sie auf Hinzufügen und dann auf Web Form hinzufügen.
    2. Im Textfeld Name geben Sie OutputCacheDuration.aspx ein. Klicken Sie dann auf Öffnen.
  3. Löschen Sie den Standardcode, den Visual Studio .NET zur Seite hinzufügt.
  4. Markieren Sie den folgenden Code, klicken Sie mit der rechten Maustaste darauf und klicken Sie dann auf Kopieren. Klicken Sie in Visual Studio .NET im Menü Bearbeiten auf Als HTML einfügen, um den Code in die .aspx-Seite einzufügen:
    <%@ OutputCache Duration="20" VaryByParam="none"%>
    <HTML>
       <HEAD>
       <script language="C#" runat="server">
       void Page_Load(object sender, EventArgs e) 
       {	
          Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
       }
       </script>
       </HEAD>
       <body>
          <STRONG>@ OutputCache Duration Sample</STRONG>
          <hr>
          <br>
          <asp:Label id="Label1" runat="server">Label</asp:Label>
          <br>
       </body>
    </HTML>
  5. Klicken Sie im Menü Datei auf OutputCacheDuration.aspx speichern, um die Seite zu speichern.
  6. Klicken Sie im Menü Erstellen in der integrierten Entwicklungsumgebung (IDE = Integrated Development Environment) auf Erstellen.
  7. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf OutputCacheDuration.aspx, um das Beispiel auszuführen. Klicken Sie dan auf Im Browser anzeigen.
  8. Wenn die Seite im Browser erscheint, achten Sie auf die angezeigte Zeit.
  9. Aktualisieren Sie die Seite im Browser. Die Zeit ist dieselbe wie vorher. Wenn Sie die Seite nach Ablauf der eingestellten Dauer von 20 Sekunden aktualisieren, wird eine neu zwischengespeicherte Version der Seite angezeigt.

    Hinweis: Wenn Sie die Seite in einem externen Browser anzeigen, können Sie die Seite mit F5 aktualisieren. Wenn Sie die Seite im internen Browser der Visual Studio .NET IDE anzeigen, können Sie mit der rechten Maustaste auf die Seite klicken und dann auf Aktualisieren klicken.

Beispiel: @ OutputCache VaryByParam

Die folgende Vorgehensweise zeigt die Verwendung des Attributs VaryByParam beim Seitenausgabe-Caching, um verschiedene zwischengespeicherte Versionen einer Seite zu ermöglichen, basierend auf einem der Werte ihrer QueryString-Variable.
  1. Erstellen Sie eine neue .aspx-Seite in Visual Studio .NET:
    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektknoten. Klicken Sie auf Hinzufügen und dann auf Web Form hinzufügen.
    2. Im Textfeld Name geben Sie OutputCacheVaryByParam.aspx ein. Klicken Sie dann auf Öffnen.
  2. Löschen Sie den Standardcode, den Visual Studio .NET zur Seite hinzufügt.
  3. Markieren Sie den folgenden Code, klicken Sie mit der rechten Maustaste darauf und klicken Sie dann auf Kopieren. Klicken Sie in Visual Studio .NET im Menü Bearbeiten auf Als HTML einfügen, um den Code in die .aspx-Seite einzufügen:
    <%@ OutputCache Duration="20" VaryByParam="testVal"%>
    <HTML>
       <HEAD>
          <script language="C#" runat="server">
       void Page_Load(object sender, EventArgs e) 
       {	
          Label1.Text = "Time: " + DateTime.Now.TimeOfDay.ToString();
       }
       </script>
       </HEAD>
       <body>
          <P>
             <STRONG>@ OutputCache VaryByParam Sample</STRONG>
          </P>
          <P>
             <hr>
          </P>
          <P>
             <br>
             <asp:Label id="Label1" runat="server"></asp:Label>
             <br>
             <hr>
             <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=123">testVal(123)</a>
             <br>
             <a href=http://yourservername/OutputCacheDemo/OutputCacheVaryByParam.aspx?testVal=345">testVal(345)</a>
          </P>
       </body>
    </HTML>
    Hinweis: Sie müssen die zwei Hyperlinks im obigen Code auf den Namen Ihres Webservers ändern. Möglicherweise stellen Sie auch fest, dass das Attribut VaryByParam variabel ist, basierend auf dem Wert der QueryString-Variable testVal. Das führt dazu, dass die Seitenausgabe für jede Instanz zwischengespeichert wird, bei der der Wert der QueryString-Variable für testVal derselbe ist.
  4. Klicken Sie im Menü Datei auf OutputCacheVaryByParam.aspx speichern, um die Seite zu speichern.
  5. Klicken Sie im Menü Erstellen in der IDE auf Erstellen.
  6. Klicken Sie mit der rechten Maustaste im Projektmappen-Explorer auf OutputCacheVaryByParam.aspx, um das Beispiel auszuführen. Klicken Sie dan auf Im Browser anzeigen.
  7. Wenn die Seite im Browser angezeigt wird, klicken Sie auf testVal(123). Dadurch geht der Browser zurück auf die Seite, wobei aber die QueryString-Variable testVal auf "123" gesetzt ist. Achten Sie auf die Zeit.
  8. Klicken Sie nochmals auf testVal(123). Die Zeit ist dieselbe wie vorher. Die Seitenausgabe wurde aufgrund des Wertes der Variable testVal zwischengespeichert.
  9. Klicken Sie auf testVal(345). Eine neue Zeit erscheint auf der Seite.
  10. Klicken Sie nochmals auf testVal(345). Die vorherige Seitenausgabe ist zwischengespeichert und wird im Browser angezeigt.
  11. Klicken Sie auf testVal(123), um zur ersten Instanz zurückzukehren. Beachten Sie, dass verschiedene Cacheversionen der Seitenausgabe erscheinen, basierend auf dem angegebenen Wert der Variable QueryString.

Problembehandlung

  • Wenn Sie VaryByParam verwenden, denken Sie daran, dass Änderungen der Groß-/Kleinschreibung der Variable QueryString zusätzliche Cacheeinträge zur Folge haben.
  • Beachten Sie, dass Duration in Sekunden angegeben wird.
  • Wenn Sie VaryByCustom verwenden, die Methode HttpApplication.GetVaryByCustomString in der Datei "Global.asax" überschreiben und keine Entsprechung zu der benutzerdefinierten Zeichenfolge gefunden wird, die mit dem Attribut geliefert wird, wird die Standardeinstellung Browser verwendet.

Informationsquellen

Weitere Informationen zum Seitenausgabe-Caching finden Sie auf folgenden Microsoft-Websites:
GotDotNet - Page Output Caching - QuickStart Tutorial
http://gotdotnet/quickstart/aspplus/doc/outputcaching.aspx

Microsoft .NET Framework Software Development Kit (SDK)
http://msdn.microsoft.com/library/en-us/dnanchor/html/netfxanchor.asp

Caching ASP.NET Pages
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpguide/html/cpconaspoutputcache.asp

@ OutputCache
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconoutputcache.asp

Eigenschaften

Artikel-ID: 308375 - Geändert am: Dienstag, 30. Mai 2006 - Version: 3.1
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft Visual C# .NET 2003 Standard Edition
  • Microsoft Visual C# .NET 2002 Standard Edition
Keywords: 
kbgrpdsasp kbhowtomaster KB308375
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com