Galileo Computing < openbook >
Galileo Computing - Programming the Net
Galileo Computing - Programming the Net


Einstieg in ASP.NET von Matthias Lohrer
Einstieg in ASP.NET
gp Kapitel 15 Leistungssteigerung durch Caching
  gp 15.1 Ganze Seiten cachen
    gp 15.1.1 Formulare cachen
  gp 15.2 Teile von Seiten cachen
    gp 15.2.1 Benutzersteuerelemente cachen, die Formulare enthalten
  gp 15.3 Cache-Einstellungen mit der Klasse HttpCachePolicy programmgesteuert beeinflussen
  gp 15.4 Beliebige Daten und Objekte im Cache ablegen
  gp 15.5 Den Cache automatisch aktualisieren
    gp 15.5.1 Den Cache vom Inhalt einer XML-Datei abhängig machen
    gp 15.5.2 Weitere Möglichkeiten, den Cache abhängig zu machen
    gp 15.5.3 Den Cache über Prioritäten steuern
    gp 15.5.4 Reagieren, wenn ein Eintrag aus dem Cache gelöscht wird
  gp 15.6 Allgemeine Tipps zur Steigerung der Performance
  gp 15.7 Weiterführende Ressourcen


Galileo Computing

15.2 Teile von Seiten cachen  downtop

Wenn Sie eine Seite nicht komplett cachen können, weil sich einzelne Bestandteile stets ändern, dann können Sie trotzdem vom Caching profitieren, indem Sie diejenigen Bestandteile, die relativ konstant sind, in Webbenutzersteuerelementen ablegen. Innerhalb eines solchen Webbenutzersteuerelements können Sie dann ebenfalls die OutputCache-Direktive angeben.

Hier wieder ein simples Beispiel. Die Datei cache_04.aspx zeigt die Uhrzeit ungecacht an. Außerdem bindet die Seite das Webbenutzersteuerelement cache_04.ascx ein. cache_04.ascx macht auch nichts anderes, als die Uhrzeit anzuzeigen, aber dieses Steuerelement wird zehn Sekunden lang in einem Cache gehalten. Das Resultat: Die obere Uhrzeit, die direkt in der Seite gerendert wird, ändert sich bei jedem Reload. Die untere Uhrzeit, die aus dem gecachten Steuerelement stammt, ändert sich jeweils frühestens nach Ablauf von zehn Sekunden. Wie in Abbildung 15.3 zu sehen ist, werden also meistens unterschiedliche Uhrzeiten angezeigt.

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 15.3 Seiten lassen sich teilweise cachen, indem Fragmente in Benutzersteuerelemente ausgelagert werden.

<!-- cache_04.aspx --> 
<%@ Page Language="VB" Debug="True" Strict="True" %>
<%@ Register Tagprefix="mlohrer" 
             Tagname="uhrzeit" 
             src="cache_04.ascx" %>
<html><head>
<title>Ein Webbenutzersteuerelement cachen</title>
</head><body>
<h3>Ein Webbenutzersteuerelement cachen</h3>
<p>Ungecacht ist es jetzt 
<% = now.ToLongTimeString() %> Uhr.</p>
<mlohrer:uhrzeit runat="server" />
</body></html>
<!-- cache_04.ascx -->
<%@ Control %>
<%@ OutputCache Duration="10" VaryByParam="none" %>
<p>Mit Cache ist es jetzt 
<% = now.ToLongTimeString() %> Uhr.</p>

Die OutputCache-Attribute VaryByHeader und Location können Sie nicht in Benutzersteuerelementen verwenden.


Galileo Computing

15.2.1 Benutzersteuerelemente cachen, die Formulare enthalten  toptop

Auch ein Benutzersteuerelement kann Formulare enthalten. Dementsprechend können Sie auch in Benutzersteuerelementen in der OutputCache-Direktive das Attribut VaryByParam beziehungsweise alternativ das Attribut VaryByControl verwenden.

Als Beispiel enthält cache_05.aspx die Hauptseite. In diese Seite ist das Benutzersteuerelement cache_05.ascx eingebettet, das die Ampelfrage enthält. Abbildung 15.4 zeigt die Darstellung im Browser.

<!-- cache_05.aspx --> 
<%@ Page Language="VB" Debug="True" Strict="True" %>
<%@ Register Tagprefix="mlohrer" 
             Tagname="ampel" 
             src="cache_05.ascx" %>
<html><head>
<title>Ein Webbenutzersteuerelement 
mit Formular cachen</title>
</head><body>
<h3>Ein Webbenutzersteuerelement mit 
Formular cachen</h3>
<p>Ungecacht ist es jetzt 
<% = now.ToLongTimeString() %> Uhr.</p>
<mlohrer:ampel runat="server" id="io" />
</body></html>
<!-- cache_05.ascx -->
<%@ Control %>
<%@ OutputCache Duration="10"
                VaryByControl="AmpelListe" %>
<script runat="server">
Sub auswahl (ByVal Sender As Object, _
             ByVal E As EventArgs)
   If AmpelListe.selectedIndex <> -1 Then
      Select Case AmpelListe.SelectedItem.value
         Case "1"
            ausgabe.InnerText ="Leider falsch!"
         Case "2"
            ausgabe.InnerText ="Das ist richtig!"
      End Select
   End If
End Sub                  
</script>

<h3>Hier beginnt das gecachte Benutzersteuerelement 
mit Formular</h3>
<p>Mit Cache ist es jetzt 
<% = now.ToLongTimeString() %> Uhr.</p>
<form runat="server" id="myForm">
Wann darf ein Fußgänger die Straße überqueren?<br>
<asp:RadioButtonList id="AmpelListe" runat="server"
     RepeatColumns="1"
     TextAlign="Right"
     OnSelectedIndexChanged="auswahl">
     <asp:ListItem text="Bei Rot" value="1" />
     <asp:ListItem text="Bei Grün" value="2" />
</asp:RadioButtonList><br>
<asp:Button id="btnOK" runat="server" 
     Text="  OK  " /><br>
<p id="ausgabe" runat="server" />
</form>

Abbildung
Hier klicken, um das Bild zu Vergrößern

Abbildung 15.4 Auch ein Benutzersteuerelement mit enthaltenem Formular lässt sich in mehreren Versionen cachen.

cache_05.ascx verwendet in seiner OutputCache-Direktive das Attribut VaryByControl="AmpelListe". Alle Varianten des Steuerelements AmpelListe werden dadurch separat gecacht.

  

Einstieg in VB.NET

VB.NET

Einstieg in C#

Visual C#

VB.NET und Datenbanken

Einstieg in XML




Copyright © Galileo Press GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de