Glengamoi (Forum) · AspHeute · .NET Heute (RSS-Suche) · AspxFiles (Wiki) · .NET Blogs

Serverseitiges Caching mit XCache

Geschrieben von: Christian Koller
Kategorie: Optimierung

This printed page brought to you by AlphaSierraPapa

Etwas, das man am Client vermeiden möchte ist das Cachen von Seiten. Am Server allerdings wäre es eine tolle Sache, wenn Seiten, die für alle User gleich sind - aber dynamisch generiert werden - für eine bestimmte Zeitspanne gecacht werden könnten. Und noch besser wäre es, bestimmte Teile der Seite zu cachen (zB die Produktdetails), allerdings andere per User zu generieren (zB den Shopping Bag).

Wie könnte das funktionieren? Man kann auf einem IIS 5.0 (und IIS 4.0) Webserver eine bemerkenswerte Performancesteigerung erzielen, wenn man ASP Seite nur einmal ausführt und dann in einem speziellen Cache des Webservers zwischenspeichert. So muß bei einer neuen Anfrage der selben Seite der ASP Code nicht mehr ausgeführt werden sondern nur noch der gecachte Output der Seite zum Client geschickt werden.

Der Performance-Gewinn durch Caching kann bis zum 10-fachen im Vergleich zu nicht-gecachten Seiten betragen.

Mit dem Tool XCache hat die Firma Post Point Software ein bemerkenswertes, aber leider nicht gerade billiges Produkt für den Internet Information Server auf den Markt gebracht, das das Caching von ASP-Seiten auf einfache Weise ermöglicht. Wenn XCache einmal auf dem Server installiert ist, so können beliebige ASP Seiten (oder auch nur Teile davon) im Arbeitsspeicher des Webservers gecacht werden. Die erzielbaren Performancegewinne sind um so bemerkenswerter je mehr Zugriffe die Website pro Tag hat. Auch das Manko einer langsamen Datenbank läßt sich mit dem XCache Tool bestmöglich kaschieren.

Arbeitsweise der XCache Erweiterung

Die XCache Webservererweiterung installiert sich als ISAPI Filter in den IIS und kann so jeden Request eines Browsers abfangen. Wird vom Browser eine ASP Seite angefordert, die sich nocht nicht im Cache der XCache Erweiterung befindet, so gibt XCache den Request an den IIS (und an die ASP bzw. VBscript und JScript Engine) weiter, wo die zugehörige ASP Seite von der Platte oder aus dem Speicher gelesen und ausgeführt wird. Der Response des Webservers enthält nun das Ergebnis der ASP Seite.

Das Ergebnis des IIS Requests speichert XCache dann in einem eigenen Bereich des Speichers bevor es den Response weiter zum Browser schickt.

Wenn der Browser eine Seite des Webservers anfordert, die schon im Cache der XCache Erweiterung liegt, so gibt XCache direkt den gespeicherten Response an den Browser zurück, ohne daß der IIS die ASP Seite aufrufen und ausführen muß.

Ein großartiges Feature des XCache Tools ist das partielle (also nur teilweise) cachen von ASP Seiten. Dabei werden die Teile der ASP-Seite, die bei jedem Aufruf ausgeführt werden sollen, in spezielle Delimiter (<$ und $>) geschrieben. Dadurch führt XCache diese Teile der ASP Seite auch in den gecachten Seiten aus. Weiters erlaubt der XCache Manager das Cachen für Websites, Verzeichnisse und einzelne Dateien ein- und auszuschalten.

Installation von XCache

Auf der XCache Produktseite kann man eine 30 Tage gültige Version von XCache anfordern und nach Erhalt des Bestätigungsemails downloaden. Die Downloaddatei wird entzipt. Danach startet man das Setup durch Doppelklick auf die Datei Setup.exe.

Die Installation selbst verläuft Menügesteuert (InstallShield Wizard) und dementsprechend einfach. Während des Installationsvorganges wird der IIS (und andere Webserverdienste) kurzzeitig angehalten.

Nach der Installation ist in der Programmgruppe ein Untermenü XCache vorhanden, in dem sich die XCache Hilfe und der XCache Manager befinden (siehe Bild 1).


Bild 1: XCache Menü

Die De-Installation des XCache Tools bewerkstelligt man über Software Installieren/Deinstallieren (Add/Remove Programs) im Control Panel des Webservers.

Einsatz von XCache

Um XCache zu aktivieren öffnet man den XCache Manager aus der Programmgruppe XCache. Man öffnet den Baum (Tree) der XCache Gruppe im XCache Manager und klickt mit der rechten Maustaste auf das Webserver-Symbol oder auf eine Website. Im erscheinenden Kontext Menü wählt man All Tasks, Register XCache (siehe Bild 2).


Bild 2: Aktivieren von XCache

Der XCache Install Wizard erscheint. Kopieren Sie aus dem Bestätigungsemail den Product License Key in das Textfeld des Wizards und klicken Sie auf Next. Klicken Sie "I Agree" im Lizenzfenster und auf Finish. Nun sollte das XCache Tool einsatzbereit sein.

Im XCache Manager sind nun alle Websites mit (Stopped) gekennzeichnet. Um XCache für eine Website zu aktivieren klicken Sie mit der rechten Maustaste auf die Website und wählen Start. Danach wird jeder Aufruf einer ASP Seite von dieser Website (identische URL inklusive Querystring) von XCache gecacht.

Das folgende ASP Skript (Time.asp) gibt zum Beispiel immer die aktuelle Uhrzeit aus:

<%
Response.Write(Time)
%>

Wenn Sie diese Datei in eine gecachte Website geben und in einem Browser aufrufen, so sehen Sie immer die Uhrzeit des ersten Aufrufs. Wenn Sie nun das Caching der Website im XCache Manager wieder ausschalten (Stop im Kontextmenü der Website), so erscheint beim Aufruf von Time.asp immer die aktuelle Uhrzeit des Webservers. Die Funktion Unload im Kontextmenü bewirkt, daß der Cache geleert wird.

Der Menüpunkt Make Uncacheable im Kontextmenü einer Website, eines Directories oder einer ASP Datei bewirkt, daß die Datei nicht gecacht wird.

XCache speichert zu jeder URL (inklusive Querystring) den Response. Wenn man nun Time.asp aufruft, so erscheint immer die selbe Uhrzeit. Ruft man jedoch Time.asp?ohneBedeutung=1 auf, so bekommt man bei diesem Aufruf immer das selbe Ergebnis, das jedoch unterschiedlich zum Ergebnis von Time.asp ist (?ohneBedeutung=1 ist der Querystring in der URL).

Steuerung von XCache

Wenn Sie verhindern wollen, daß XCache eine ASP Datei cacht, so können Sie im XCache Manager die Datei mit dem Kontextmenüeintrag Make Uncacheable für den Cache sperren.

Die maximale Anzahl der gecachten Seiten, die maximale Speicherdauer einer gecachten Seite (Expiration) und andere XCache Parameter lassen sich für jede Website im XCache Manager (Kontextmenü, Properties) einstellen (siehe Bild 3).


Bild 3: XCache Eigenschaften für eine Website

Partielles Cachen

Um die Webserverperformance zu verbessern lassen sich ASP Seiten cachen. Will man aber nun bestimmte Bereiche der ASP Seite bei jedem Aufruf neu ausführen, so erlaubt XCache auch dieses. Die dafür zuständige Technik nennt sich partielles Caching (bei XCache Active Caching genannt).

Partielles Caching für eine Website aktiviert man im Eigenschaften-Fenster der Website im XCache Manager (Kontextmenü, Properties). Dort stellt man Enable Active Caching auf "Ein".

Active Caching ist ein Prozess, bei dem eine ASP Seite zweimal kompiliert (ausgeführt) wird.

Der gesamte ASP Sourcecode, der von den Begrenzungszeichen <% %> (oder auch <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER"> </SCRIPT>) begrenzt ist, wird vor dem Laden in den Cache ausgeführt. Genauso werden inkludierte Dateien und deren ASP Code ausgeführt.

Der Teil der ASP Seite, der hingegen von den Begrenzungszeichen <$ und $> eingeschlossen ist, wird bei jedem Aufruf der Seite neu kompiliert und ausgeführt. Dasselbe gilt auch für "XCache Includes", die mit der folgenden Direktive in eine ASP Seite eingebunden werden:

<!-- #dynamic virtual="/cachetest2.asp" -->

Es werden also die folgenden Aktionen und Skripts vor dem Laden in den Cache ausgeführt:

Die folgenden Teile hingegen werden bei jedem Aufruf der Seite neu ausgeführt:

Zur Veranschaulichung ein Beispiel:

Ausfuehrung vor dem Cachen:
<%
Response.Write(Time)
%>
<br>
Aufuehren bei jedem Seitenaufruf:
<$
Response.Write(Time)
$>

Die erste Zeitangabe wird vom Server berechnet und im Cache gespeichert, die zweite Zeitangabe jedoch wird bei jedem Aufruf der Seite neu errechnet und ist somit immer aktuell.

Achtung: Wenn sie im Eigenschaftenfenster einer Website Enable Active Caching auf Nein setzen, so wird der ASP Teil innerhalb der Begrenzungszeichen <$ und $> nicht ausgeführt. Stattdessen wird der Sourcecode zum Browser geschickt. Dieses Verhalten tritt auch dann auf, wenn sie im XCache Manager das Caching einer Website stoppen.

Ein Tip für Leute, die sich mit Active Caching weiter spielen wollen: Es ist auch möglich im ASP Teil, der vor dem Cachen ausgeführt wird, ASP Kommandos dynamisch zu erstellen.

Beispiel eines dynamisch erstellten ASP Sripts, das mittels Active Caching bei jedem Aufruf ausgeführt wird:

<%
strASPCommand = "Response.Write(7*7)" & vbcrlf & _
       "Response.Write("" ... feiner Sand"")"

Response.Write("<$ " & strASPCommand & " $>")
%>

Vor dem Cachen des ASP Skripts werden die "normalen" ASP Teile ausgeführt. Die gecachte Seite sieht somit wie folgt aus:

<$ Response.Write(7*7)" & vbcrlf & _
       Response.Write(" ... feiner Sand") $>

Beim Aufruf der gecachten Seite werden alle <$ und $> Begrenzungszeichen in normale Begrenzungszeichen umgewandelt und das ASP Skript ausgeführt.

Daher ist das Ergebnis der Seite beim Aufruf in einem Browser wie folgt:

49 ... feiner Sand

Schlußbemerkung

XCache erlaubt ein komfortables und effizientes Cachen von ASP Seiten. Die dadurch erzielbare Performance ist dabei oftmals 10 mal so hoch wie ohne XCache.

Um XCache sinnvoll einsetzen zu können muß man sich die interne Funktionsweise von XCache vor Augen führen: Ein ASP Skript wird beim ersten Aufruf ausgeführt und im Cache gespeichert. Beim nächsten Aufruf des ASP Skripts (mit demselben Querystring) werden die Skripts der ASP Datei NICHT mehr ausgeführt, sondern einfach aus dem Cache zum Browser geschickt.

Um ein partielles Cachen von Seiten zu erzielen, bietet das XCache Tool das Active Caching Feature an. Dadurch lassen sich einzelne Bereich von ASP Seiten bei jedem Aufruf frisch berechnen.

This printed page brought to you by AlphaSierraPapa

Verwandte Artikel

HTTP Komprimierung in IIS5
http:/www.aspheute.com/artikel/20001115.htm
Output Caching 101
http:/www.aspheute.com/artikel/20011008.htm
Trafficreduzierung mit XCompress
http:/www.aspheute.com/artikel/20020731.htm
Webserver-Tuning mit XTune
http:/www.aspheute.com/artikel/20000814.htm

Links zu anderen Sites

Post Point Software
http://www.postpointsoft.com/
XCache
http://www.postpointsoft.com/home/xcache_technical_specs.htm

 

©2000-2006 AspHeute.com
Alle Rechte vorbehalten. Der Inhalt dieser Seiten ist urheberrechtlich geschützt.
Eine Übernahme von Texten (auch nur auszugsweise) oder Graphiken bedarf unserer schriftlichen Zustimmung.