Enormen Traffic in den Griff bekommen - Prinzipien zur Umsetzung eines Website-Caching-Systems
Dessen Besucherzahlen in die millionen gehen, sei nun monatlich oder sogar täglich, der muss nicht nur einen Server sein eigen nennen, sondern sich auch darum kümmern das nicht zuviel Traffic verschwendet wird. Entweder optimiert man indem man hardware-fressende Funktionalitäten entfernt (siehe dazu eine Anleitung zur Optimierung von Wordpress von Robert Basic) oder man greift auf einen Chache zurück.
Was ist ein Cache
Bei jedem Aufruf einer Website muss diese in PHP neu erstellt werden. Daten werden aus der Datenbank geladen und positioniert und Berechnungen in PHP werde ausgeführt, bis die Webseite komplett erstellt wurde. Nun ist das denkbar schnell wenn ein Besucher die Website aufruft, was passiert aber, wenn tausende, oder gar millionen Besucher täglich auf die Website kommen und diese Operation ausführen? Ganz klar, der Traffic schießt in die Höhe, dadurch die Kosten des Webmasters und wenn man ganz wenig Glück hat, bricht der Server unter dieser Last zusammen. Nun gibt es zwei Möglichkeiten, entweder man kauft sich einfach ein leistungsstärkeres Serversystem ein oder, und das ist die bessere Variante, man programmiert sich ein Website-caching-system.
Wie funktioniert ein Cache
Im Grunde ist dies wirklich einfach zu erklären: Ruft man eine Website auf, erhält man als Ergebnis eine HTML-Seite. Auch wenn im Hintergrund alles über PHP läuft und etliche Datenbankabfragen erfolgen, bekommt der User eine HTML-Seite präsentiert, davon kann man sich ganz leicht überzeugen, indem man sich zum Beispiel den Quellcode des Webdesignblogs anschaut. Im Hintergrund läuft alles über ein starkes System aus PHP und MySql, aber man bekommt nur HTML angezeigt (jetzt mal abgesehen von Javascript usw.).
Was liegt also näher, als einfach die erzeugte HTML-Seite, so wie sie ist, abzuspeichern und anstelle die ganzen Datenbankabfragen zu leisten, dem Besucher einfach die schon erzeugte HTML-Seite auszugeben.
In welchen Bereichen macht ein Cache Sinn
Ein Cache macht bei Seiten Sinn, die zwar über PHP dynamisch erzeugt werden, die sich aber von Besucher zu Besucher nicht stark unterscheiden. Schaut euch einfach mal meine Startseite an: Dort finden sich die letzten 5 Artikel, das Menü, die letzten Kommentare usw. Nun denkt euch mal ganz kurz die Zufallslinks oben auf der Website weg, bis hierhin ist alles von Besucher zu Besucher gleich, erst wenn ich einen neuen Artikel schreibe, oder jemand einen Kommentar schreibt, oder mir jemand einen Trackback schickt, ändert sich diese Website und genau darum könnte ich sie so, wie sie nun ist, als statische HTML-Seite in meinem Cache abspeichern.
Nun bleibt noch das Problem mit den dynamischen Zufallslinks am oberen Rand bestehen, muss man deshalb darauf verzichten, diese Website in den Cache aufzunehmen? Nein, denn was hindert mich daran, die gesamte Webseite im Cache zu speichern und nur den dynamischen Teil, nämlich die Zufallslinks, als PHP-Code darin bestehen zu lassen? So würde ich für die komplette Webseite nur einmal den PHP-Code ausführen und hätte enorm viele PHP- und MySql-Berechnungen gespart.
Wo findet man Caching-Systeme
Überall dort, wo sie benötigt werden! Aber diese Antwort reicht natürlich nicht. Bei selbstprogrammierter Software, zum Beispiel ein Service im Internet oder eine Dienstleistung, wird es sicherlich eine selbstprogrammierte Lösung sein, allerdings gibt es im Internet gewiße Software-Pakete, die vom Grund auf schon mit einem Caching-System daher kommen. Meistens handelt es sich hierbei um Content Management Systeme, bei diesen kann man schon grundsätzlich davon ausgehen, das sie eine hohe Besucherlast aushalten müssen, mitunter ein sehr gutes Beispiel stellt hier das Caching-System von Typo3 dar.
Daran kann man auch sehr gut festlegen, daß sich die Blogsoftware Wordpress auch immer weiter zu einem Content Management System entwickelt, denn seit der Version 2.0 gibt es dort auch standardmäßig ein Caching-System integriert.
Cache-Strategien
Wie ein Cache nun arbeitet ist stark von der Website abhängig und was angeboten wird. Zum Beispiel macht es natürlich Sinn, in Content Management Systemen, die oben genannte Variante zu nutzen, sprich die Webseite zu erzeugen und dann das HTML-Ergebnis zu cachen.
Es gibt aber noch viel mehr Möglichkeiten, die gerade bei Systemen, die nicht zur Verwaltung von Content dienen, zum Einsatz kommen.
- Teil-Caching - auch wenn die Webseite abhängig von der Eingabe eines Besuchers ist, wiederholen sich gewiße Eingaben in vielen Fällen und diese könnte man dann nach einem Counter-Verfahren (wie oft wird die gleiche Anfrage von unterschiedlichen Besuchern ausgeführt) als statische Ergebnisse abspeichern
- Datenbankanfragen cachen - Sehr viele Datenbanken unterstützen einen Anfragecache. Das bedeutet, die Datenbank speichert die Anfrage zusammen mit den Ergebnissen zwischen. Erfolgt eine weitere identische Anfrage, so wird das Ergebnis vom Cache ausgeliefert und die Anfrage nicht geparst und erneut ausgeführt
- Es gibt noch mehr Caching-Strategien und viele beruhen nicht auf PHP, zum Beispiel ein Server-Cache oder ein Proxyserver-Cache, die häufigsten Fälle dürften aber durch den Cache von statischen HTML-Dateien abgedeckt sein
Weitere Methoden zur Traffic-Optimierung
Ein Cache bringt bei Zugriffszahlen im millionen Bereich schon einiges, aber man kann noch weiter optimieren:
- Tuning vom Apache-HTTPD
- GZip - Komprimierung der ausgehenden Daten
- Webdesign ohne einen WYSIWYG-Editor erzeugen - verringern des HTML-Formatierungs-Mülls
- Bilder und Grafiken reduzieren oder “thumbnailen”
Einen sehr interessanten Artikel zur Traffic-Optimierung findet sich auf de.selfhtml.org mit dem Namen: Häuptling Schnelles Wiesel: Wirksames Tuning für viel besuchte Webauftritte
Ein Liedchen von Performance und hohen Traffic-Lasten kann Markus Frind von Plentyoffish.com singen: Microsoft Asp.net 2.0 Performance
Verwandte Artikel
- AJAX Ladezeiten Feedback zur Erhöhung der Usability
- Wordpress - schneller und weniger Verbrauch
- Das Ideen-Traffic-Nutzen-Dreieck
- 44 Tipps für mehr Traffic
- HowTo: Traffic von Yahoo Answers
Sei der erste, der einen Kommentar abgibt
Tut mir leid, die Kommentarfunktion für diesen Beitrag ist geschlossen.
