7.8 Leistung: Performance erhöhen durch Caching

Ein aktivierter Cache bietet einen deutlichen Leistungsschub heißt es im Bereich Verwalten – Einstellungen – Leistung. So ein Leistungsschub kann gerade viel besuchten Websites ausgesprochen gut tun. Der Drupal-Cache besteht aus MySQL-Tabellen, in die oft aufgerufene komplette Seiten oder Teile davon (Blöcke) geschrieben werden. Wenn der nächste Besucher denselben Inhalt sehen will, wird die Seite nicht aus den normalen Tabellen zusammengestellt, sondern in einem Rutsch aus dem Cache gelesen.

7.8.1 Seitencache

Der wichtigste Cache ist der Seitencache. Die Idee, ganze Seiten zu cachen, reduziert die Ausführungszeit um ein Vielfaches, das Thema ist aber sehr komplex, und man bewegt sich immer in einem Spannungsfeld von Aktualität und Erreichbarkeit der Website:

  • Wenn Sie beispielsweise die Cache-Lebensdauer auf eine Stunde setzen, so werden neue Kommentare auch erst nach einer Stunde angezeigt.

  • Wenn Sie nun Gästen erlauben, Kommentare zu schreiben, sehen die Gäste ihren eigenen Kommentar erst eine Stunde später. Dieser Fakt ist an sich nicht schlimm, aber manche glauben dann, dass es besser wäre, den Kommentar noch mal zu posten („Vielleicht hat das Speichern ja nicht geklappt!“).

Denken Sie immer an Ihre Zielgruppe vor dem Bildschirm.

Mit dem normalen Caching-Modus und einer sehr kleinen Lebensdauer sind Sie immer auf der sicheren Seite, da Drupal in diesem Fall die Seitenzugriffe für Gäste auf eine effektive Art cached, und bei einer Einstellung von ein bis zwei Minuten haben Sie auch das Kommentarproblem nur noch in Ausnahmefällen. Ein bis zwei Minuten werden als Wartezeit toleriert, und so lange versuchen die Benutzer auch, ihren gerade geposteten Kommentar zu lesen (Abbildung 7.17).

Caching-Modus
Abbildung 7.17: Caching-Modus

Der aggressive Caching-Modus kann zu Nebeneffekten führen. Die Nebeneffekte äußern sich darin, dass die Website im schlimmsten Fall nicht mehr aufrufbar ist, weil sich der Webserver „aufhängt“. Im günstigsten Fall kommt das Caching nur ein wenig durcheinander. Beide Varianten sind allerdings ein k.o.-Kriterium. Die installierten Module, die damit vermutlich Probleme bekommen werden, sind glücklicherweise in roter Farbe neben der Einstellung aufgelistet, in meinem Fall Poormanscron.

Die Seitenkompression sorgt dafür, dasss Drupal die ausgelieferten Seiten automatisch komprimiert, und Ihr Browser packt sie wieder aus. Webserver können das ebenfalls. Im Apache ist das Module mod_gzip dafür zuständig. Falls die Konfiguration Ihres Webservers dafür sorgt, dass er die Seiten auch komprimiert, können Sie die Funktion hier in Drupal deaktivieren. Sie können, je nach Konfiguration des Apache-Webservers diese Information unter Verwalten – Berichte – Statusbericht einsehen. Wenn Sie beispielweise dieses Ergebnis unter XAMPP Lite bekommen:

Webserver: Apache/2.2.8 (Win32) DAV/2 mod_ssl/2.2.8 OpenSSL/0.9.8g mod_autoindex_color PHP/5.2.5

so ist der Apache-Webserver nicht mit dem Modul mod_gzip ausgerüstet (siehe auch Abschnitt 9.2.4 Statusbericht).

7.8.2 Block-Cache: Nur Teile einer Seite cachen

Diese Einstellung ist neu in Drupal 6 und ermöglicht ein Caching der Blöcke. Diese Art des Caches ist im Gegensatz zum kompletten Seitencache ein guter Mittelweg. Es ist, insgesamt betrachtet, meistens besser, Teile der Website zu cachen und diese Einzelteile bei Bedarf wieder zusammenzubauen. Dadurch würde man auch das oben beschriebene Kommentarproblem umgehen. Ist der Seitencache insbesondere für Gäste der Website wichtig, so ist der Block-Cache für angemeldete Benutzer wichtig. Bisher war es so, dass angemeldeten Benutzern immer eine „frische“ Webpage aus der Datenbank aufgebaut worden ist. Bei vielen gleichzeitig angemeldeten Benutzern konnte diese Einstellungen schnell zu Problemen führen. Mit dem Block-Cache werden auch für authentifizierte Benutzer nur die Blöcke neu aufgebaut, in denen sich etwas verändert hat.

7.8.3 Bandbreitenoptimierungen

Bandbreitenoptimierungen sind immer zu begrüßen. Ausgelagerte CSS- und JavaScript-Dateien sollen nur einmal geladen werden. Allerdings kann es auch hier zu Problemen im Sinne von Verzögerungen kommen, falls dynamische Elemente in den CSS- und JavaScript-Seiten enthalten sind oder Sie gerade am Template arbeiten.

7.8.4 Cache leeren

Durch einen Klick auf diesen Button leeren Sie alle Cache-Tabellen und haben dann einen Zustand, in dem wirklich alle Teile der Website neu geladen werden. Auch dieser Schalter ist neu in Drupal 6 und ausgesprochen praktisch. In Drupal 5 musste man die Cache-Tabellen noch per Hand über die Datenbankverwaltung leeren.

ACHTUNG

Überlegen Sie es sich gut, wenn Sie auf hochbelasteten, produktiven Websites auf diesen Button klicken! Benutzen Sie ihn nur, wenn Sie sicher sind, dass der Webserver den Cache zügig wieder aufbauen kann. Im lokalen Entwicklungsbetrieb ist das natürlich kein Problem. Ein aufgebauter, funktionierender, produktiver Seitencache ist „wertvoll“ und muss nach dem Leeren des Caches komplett neu aufgebaut werden. Wenn dann noch ein Suchmaschinenspider (Webcrawler6) die Website besucht, ist Ihr Webserver schnell überfordert.


Ihre Bewertung: Nichts