Drupal, wie auch viele andere CMS, sind in ihrer Standardinstalllation meist recht wenig performant. Die hohe Flexibilität, die man gerade bei Drupal geboten bekommt zahlt man mit dem Preis einer Vielzahl an Datenbank-Querys und Festplattenzugriffen. Gerade wenn man "Alleskönner" wie Views und CCK einsetzt und viele weitere Drupal-Module aktiv hat, die die Seite um wertvolle Funktionen ergänzen, kann man schnell mit 100-200 Querys pro Seitnaufbau rechnen. Ist die Seite dann noch sehr gut besucht, kommt der Server schon ganz schön ins Schwitzen. In diesem Beitrag möchte ich das Drupal-Modul Boost vorstellen und zu Beginn einige weitere Maßnahmen nennen, die die Performance deutlich verbessern.
Der Drupal-Cache
Für niedrig bis normal frequentierte Seiten ist der Drupal-Cache sicher ausreichend. Er speichert Elemente einer Seite (wie Blöcke, Formulare etc.) oder, je nach Konfiguration, auch ganze Seiten in der Datenbank. Das beschleunigt den Seitenaufbau schonmal um einiges. Das Problem ist, dass dabei trotzdem Datenbankabfragen stattfinden, die das Server-System belasten. Hier ist also noch deutlich mehr an Performance rauszuholen. Dennoch werden auch hier noch die Seiten aus einzelnen Elementen zusammengebaut. Die Scripte müssen kompiliert werden (wenn APC nicht eingesetzt wird, dazu gleich mehr) und sie müssen die Ausgabe "berechnen", was neben den Datenbankabfragen am meisten Server-Ressource verbraucht.
APC - Opcode Cache
APC ist ein Opcode-Cache. Das bedeutet, dass die Scripte vorcompiliert im Arbeitsspeicher des Servers gehalten werden. Ein Interpretieren der Scripte bei jedem Request wird so verhindert. Bereits durch diese Maßnahme, die nichts mit Inhaltscaching zu tun hat, kann einiges an Server-Ressourcen gespart werden. Um APC zu nutzen ist das PHP-Modul apc auf dem Server zu installieren.
Drupal-Modul Cacherouter
Cacherouter ist kein Cache an sich. Das Modul steuert die Verwendung von verschiedenen Cachevarianten. Hier kann z.B. der Opcode-Cache APC auch als Cache für HTML Inhalte verwendet werden. Dann werden die Inhalte nicht mehr in der DB gespeichert sondern im RAM des Servers. Das bringt natürlich einen ziemlichen Performance-Schub da hier die Festplattenzugriffe entfallen. Aufpassen muss man hier zum einen bei Multisiteinstallationen (dann muss in der settings.php im Cacherouter Konfigurationsarray ein Key für jede Seite festegelegt werden, sonst werden die Inhalte der Seiten vermischt!) zum anderen auch, wenn man das Fileuploadmodul verwendet (Fehler: "Form is missing from Server-Cache"). Abhilfe gibt es dazu auf Drupal.org im Forum.
Boost - schneller wird es nicht mehr
Boost ist wohl die effektivste Methode zum Cachen von HTMLSeiten. Hier werden ganze HTML Seiten im Dateisystem statisch zwischengespeichert und bereits per .htaccess ausgeliefert, falls vorhanden. Das Problem ist jedoch, dass dynamische Seiten erst dann aktualisiert werden, wenn der Cache nach seiner Lebensdauer neu erstellt wird. Man kann damit nicht das Cachen einzelner Blocke etc. ausschalten. Es werden immer ganze Seiten gecached. Der Vorteil liegt auf der Hand: Keine Datenbankzugriffe, keine PHP-Scriptaufrufe. Mit dem Modul Boost kann man auch sehr genau festlegen, welche Seite so gecached werden sollen und welche nicht. Seiten, die überwiegend aus kurzlebigem dynamischem Inhalt bestehen, können so vom Cache ausgeschlossen werden.
Nachteile vom Caching
Ein Nachteil von jedem Caching, unabhängig von der gewählten Methode, ist sicher, dass die neuen Inhalte nur nach Ablauf der Cachezeit sichtbar werden. Ein neue Eintrag kann somit erst nach einer gewissen zeit sichtbar werden (Forum, Kommentare etc.). Man sollte einfach sehen, dass Uuser nicht zu viele dynamische Inhalte, die häufig aktualisiert werden, auf zu vielen verschienden Seite präsentiert bekommen. Es ist z.B. nicht besonders günstig, wenn man eine Shoutbox als Block auf jeder Seite anzeigt. So würde man strengenommen wegen diesem einen Block keine einzelne Seite cachen können. Dieses Problem haben wir auf auf unserem Gehirnjogging Portal erfahren.
Weitere nützliche Inhalte finden Sie auch auf Rapsli's Blog, dort wurde ich das erste mal auf Boost aufmerksam.
Sollten Sie Fragen haben oder Hilfe benötigen, schauen Sie sich doch einmal unseren Service zur Drupal-Entwicklung und Beratung an.










Gerade wenn man "Alleskönner" wie Views und CCK einsetzt und viele weitere Drupal-Module aktiv hat, die die Seite um wertvolle Funktionen ergänzen, kann man schnell mit 100-200 Querys pro Seitnaufbau rechnen.
Dann kannst du dich aber noch glücklich schätzen. Sobald ein paar Module installiert sind, dann bewegen wir uns für einen Seitenaufbau wohl eher ein bisschen darüber (ungecached versteht sich).
Kommentar hinzufügen