Inhalt
Vorwort
1 Wie .NET und ASP.NET funktionieren
2 Installation
3 Hinweise zu VB.NET
4 »Hallo, Welt!« – Ein ASP.NET-Crashkurs
5 Die Page-Klasse
6 HTML-Serversteuerelemente
7 Validierung von Anwendereingaben
8 Webserversteuerelemente
9 Webserversteuerelemente für die Darstellung von Listen
10 Webserversteuerelemente selbst erstellen
11 Der Status von Seiten, Sitzungen und Applikationen
12 ASP.NET und Datenbanken
13 »Wer darf was?« ASP.NET und Sicherheit
14 Webanwendungen erstellen und konfigurieren
15 Leistungssteigerung durch Caching
16 Web Services
A Anhang
Index
Download (ca 14,3 MB)
Buch bestellen (29,90 EUR)
Ihre Meinung?@
<< zurück | Galileo Computing / <openbook> / Einstieg in ASP.NET | vor >>
Einstieg in ASP.NET von Matthias Lohrer
| Kapitel 15 Leistungssteigerung durch Caching
|  | 15.1 Ganze Seiten cachen
|  |  | 15.1.1 Formulare cachen
|  | 15.2 Teile von Seiten cachen
|  |  | 15.2.1 Benutzersteuerelemente cachen, die Formulare enthalten
|  | 15.3 Cache-Einstellungen mit der Klasse HttpCachePolicy programmgesteuert beeinflussen
|  | 15.4 Beliebige Daten und Objekte im Cache ablegen
|  | 15.5 Den Cache automatisch aktualisieren
|  |  | 15.5.1 Den Cache vom Inhalt einer XML-Datei abhängig machen
|  |  | 15.5.2 Weitere Möglichkeiten, den Cache abhängig zu machen
|  |  | 15.5.3 Den Cache über Prioritäten steuern
|  |  | 15.5.4 Reagieren, wenn ein Eintrag aus dem Cache gelöscht wird
|  | 15.6 Allgemeine Tipps zur Steigerung der Performance
|  | 15.7 Weiterführende Ressourcen
## 15.4 Beliebige Daten und Objekte im Cache ablegen Jede Webanwendung verfügt über eine Instanz der Cache-Klasse. Dieses Objekt ist beispielsweise über die Cache-Eigenschaft jedes Page-Objekts erreichbar. In diesem Cache-Objekt können Sie Daten beliebigen Typs für einen bestimmten Zeitraum speichern. Sie können die gespeicherten Daten aktualisieren und wieder entfernen.
Achtung In mancherlei Hinsicht funktioniert dieses Cache-Objekt damit so ähnlich wie die Application-Variablen. Der wesentliche Unterschied zwischen Application-Variablen und Cache-Variablen besteht darin, dass man sich auf die Existenz einer Cache-Variablen nie wirklich verlassen kann, denn es kann ja sein, dass sie in der Zwischenzeit aus dem Cache gelöscht wurde. Im Code kann eine Cache-Variable daher stets nur nach einer Überprüfung auf Existenz eingesetzt werden. Der Fall, dass die Cache-Variable nicht existiert, muss immer berücksichtigt werden, und in diesem Fall muss der Code über eine Alternative verfügen.
cache_07.aspx und cache_08.aspx demonstrieren ein Beispiel. Mit cache_07.aspx legt der Anwender mit Hilfe eines Formulars im applikationsweiten Cache-Objekt einen Wert unter dem Schlüssel »Topmeldung« ab. Dabei wird diesem Element eine Gültigkeit von zehn Sekunden mit auf den Weg gegeben. Außerdem bietet das Formular die Möglichkeit, den Cache zu leeren. cache_08.aspx ruft den Wert aus dem Cache ab oder gibt eine alternative Meldung aus, wenn kein entsprechender Wert mehr im Cache verfügbar sein sollte. Abbildung 15.6 zeigt die Darstellung im Browser. Hier klicken, um das Bild zu Vergrößern Abbildung 15.6 Einträge können für einen vordefinierten Zeitraum im Cache bleiben.
    <!-- cache_07.aspx -->
    <%@ Page Language="VB" Debug="True" Strict="True" %>
    <script runat="server">
    Sub btnOK_Click _
                  (Sender As Object, E As System.EventArgs)
       Cache.Insert("Topmeldung", _
                    TopText.value, _
                    Nothing, _
                    DateTime.Now.AddSeconds(10), _
                    TimeSpan.Zero)
       ausgabe.innerText = TopText.value
    End Sub

    Sub btnDelete_Click _
                  (Sender As Object, E As System.EventArgs)
       Cache.Remove("Topmeldung")
       ausgabe.innerText = ""
       TopText.value=""
    End Sub
    </script>
    <html><head><title>
    Das anwendungsweite Cache-Objekt nutzen</title></head>
    <body>
    <h3>Das anwendungsweite Cache-Objekt nutzen</h3>
    <form runat="server" >
    Topmeldung<br>
    <p>Aktuell gespeichert:
    <span id="ausgabe" runat="server" /></p>
    <input type="text" id="TopText" runat="server"
           size="60">
    <br>
    <asp:Button runat="server" id="btnOK"
                OnClick="btnOK_Click"
                Text="Meldung speichern" />
    <br><br>
    <asp:Button runat="server" id="btnDelete"
                OnClick="btnDelete_Click"
                Text="Meldung löschen" />
    </form>
    <p>
    <a href="cache_08.aspx">Zur Testseite cache_08.aspx</a>
    </p></body></html>
    <!-- cache_08.aspx -->
    <%@ Page Language="VB" Debug="True" Strict="True" %>
    <script runat="server">
    Dim t As String
    Sub Page_Load (ByVal Sender As Object, _
                   ByVal E As EventArgs)
       If (Cache("Topmeldung")) Is Nothing Then
          t = "Nix drin"
       Else
          t = CType(Cache("Topmeldung"), String)
       End If
    End Sub
    </script>
    <html>
    <head><title>Das anwendungsweite Cache-Objekt
    nutzen</title></head>
    <body>
    <h3>Das anwendungsweite Cache-Objekt nutzen</h3>
    <p><% = t %></p>
    </body></html>
Die Methoden Cache.Insert und Cache.Add arbeiten ähnlich. Beide fügen dem Cache einen Eintrag hinzu. Falls unter dem genannten Schlüssel bereits ein Eintrag vorhanden ist, wird dieser überschrieben. Auf diese Weise können Sie Cache-Einträge sehr einfach aktualisieren. Der Add-Methode müssen Sie in insgesamt sieben Parametern alle möglichen Informationen übergeben. Von der Insert-Methode gibt es demgegenüber einige überladene Varianten. Im einfachsten Fall übergeben Sie der Insert-Methode lediglich einen Schlüssel und das zu speichernde Objekt. cache_07.aspx verwendet in der Prozedur btnOK_Click einen Aufruf mit insgesamt fünf Parametern:
    Cache.Insert("Topmeldung", _
                 TopText.value, _
                 Nothing, _
                 DateTime.Now.AddSeconds(10), _
                 TimeSpan.Zero)
Nach dem Schlüssel und dem zu speichernden Objekt nennt der dritte Parameter Cache-Abhängigkeiten. Dieses Thema wird in Abschnitt 15.5, den Cache automatisch aktualisieren, erläutert. Hier gibt es keine Cache-Abhängigkeiten, deswegen wird Nothing übergeben. Es folgt der Zeitpunkt, bis zu dem das Objekt im Cache bleiben soll, und anschließend ein Wert für einen gleitenden Ablauf. cache_07.aspx definiert eine fixe Ablaufzeit. Daher wird für den fünften Parameter der Wert TimeSpan.Zero übergeben.
Tipp Der Parameter für die gleitende Ablaufzeit soll kurz erläutert werden. Mit Hilfe dieser Einstellung kann der Verbleib eines Objekts davon abhängig gemacht werden, wie oft es aufgerufen wird. Wenn hier beispielsweise drei Minuten eingestellt werden, dann bleibt das Objekt nach einem Aufruf für drei Minuten im Cache. Wenn es während dieser drei Minuten erneut aufgerufen wird, dann startet diese Frist neu. Im Prinzip kann auf diese Weise ein Objekt ewig im Cache bleiben, sofern es nur oft genug aufgerufen wird. Wenn das Objekt aber nur selten angefordert wird, wird es diese Frist irgendwann überschreiten und aus dem Cache gelöscht werden.
Die Prozedur btnDelete_Click löscht mit dem Befehl Cache.Remove("Topmeldung") den Eintrag aus dem Cache. Außerdem aktualisiert die Prozedur die Darstellung des Formulars. cache_08.aspx überprüft zunächst, ob es einen Cache-Eintrag mit dem Schlüssel Topmeldung überhaupt gibt. Wenn nicht, wird der Text Nix drin verwendet. Wenn ein solcher Cache-Eintrag vorhanden ist, dann wird das gecachte Objekt durch Aufruf der Funktion CType zunächst in ein Objekt vom Typ String umgewandelt und das Ergebnis wird weiterverwendet.
       If (Cache("Topmeldung")) Is Nothing Then
          t = "Nix drin"
       Else
          t = CType(Cache("Topmeldung"), String)
       End If
Sie können selbstverständlich nicht nur einfache Strings im Cache speichern, sondern Objekte jeder Art. Ein typischer Kandidat für den Cache sind Ergebnisse von Datenbankabfragen, weil diese relativ ressourcenaufwändig sind. Hier können Sie beispielsweise DataSet-Objekte ablegen.
<< zurück | <top> | vor >>
Zum Katalog
Einstieg in ASP.NET bestellen
Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen? Ihre Meinung

.NET-Bibliothek
| Einstieg in VB.NET
| VB.NET
| Einstieg in C#
| Visual C#
| VB.NET und Datenbanken

Empfehlung
| Einstieg in XML

Shopping
Versandkostenfrei bestellen in Deutschland und Österreich Info

MyGalileo
Der Service für registrierte Leser: Info

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