Performance-Optimierung in Drupal

Mit Drupal zu arbeiten ist im Grunde immer eine Freude, denn auch komplexe Seiten können mit dem immensen Leistungsumfang von Drupal ohne große Hindernisse erstellt werden. Der gewaltige Umfang führt aber auch zu Nachteilen, die sich in der Performance-Analyse zeigen.

Für eine solche Analyse gibt es zahlreiche Tools, wie zum Beispiel Google »Lighthouse« oder »PageSpeed Insights«. Die Ladezeit der Seite ist von großer Bedeutung, da sie zwischenzeitlich in das Ranking der Suchmaschinen einfließt.

Es gibt (aus Sicht von Google) eine »magische Grenze« für die Ladezeit der Seite und die liegt zwei Sekunden. Für jede weitere Sekunde gehen angeblich (laut Studien) 10 % der Benutzer verloren. 

Eine typische Drupal 7 Seite liegt zunächst deutlich über der zwei Sekunden Grenze. Es gibt aber eine Reihe von Möglichkeiten die Ladezeit deutlich zu reduzieren.

Performance-Einstellungen

Die Einstellungen unter Konfiguration » Entwicklung » Leistung sind absolut wesentlich. Hier wird das Caching aktiviert und Aggregation der Javascript- und CSS-Dateien. Ohne diese Optimierung sind keine guten Ergebnisse möglich. Eine Seite im Produktionsbetrieb sollte deshalb unbedingt alle Möglichkeiten ausnutzen.

Drupal Performance-Einstellungen

Die drupal-eigene Aggregation der Javascript- und CSS-Dateien kann mit dem Modul »Advanced CSS/JS Aggregation« aber noch wesentlich verbessert werden.

Lazy Loading Images - No, thanks

Sehr verbreitet ist der Rat, die Bilder mit einem Platzhalter zu versehen und dynamisch laden zu lassen. Dafür gibt es verschiedene Drupal-Module wie »Image Lazyloader« und »Views Lazy Load« Ich konnte mit diesen Modulen aber keine Verbesserung, sondern nur eine deutliche Verschlechterung feststellen.

Bilder-Optimierung

Als sehr effektiv hat sich dafür eine Optimierung der Bilder erwiesen, denn bei der Performance-Analyse weißt Google grundsätzlich auf das Optimierungs-Potential von Bildern hin. Dafür eignet sich das Modul »Image Optimize«, besonders wenn man auf dem Server Zugriff auf Kommandozeilen-Programme wie pngquantOptiPNG,  JPEGTran oder Jpegoptim hat.

Image Optimize arbeitet als Drupal-Bild-Toolkit und klinkt sich vor GD oder ImageMagick ein. Für Bilder, die mit Image Optimize erzeugt werden, erscheint bei der Analyse mit PageSpeed Insights kein Hinweis auf eine mögliche Optimierung mehr. Nach der Installation muß das Modul unter Konfiguration » Medien » Bild-Toolkit als Standard-Toolkit ausgewählt werden und die Pfade zu den Tools eingegeben werden. 

Die Optimierung wird aber nur wirksam, wenn man in der Darstellung von Nodes und Views einen Bild-Stil für die Anzeige verwendet. Werden dort Original-Bilder angezeigt, dann kann keine Optimierung erfolgen. Für die bereits vorhandenen Bilder sollte man alle Bild-Stile aktualisieren, damit die Bilder mit Hilfe von Image Optimize neu erstellt werden.

Drupal Image Optimize Einstellungen

Drupal Image Optimize Einstellungen

Responsive Images

Bilder können in Drupal 7 & 8 responsive gemacht werden. Drupal 8 hat im Core bereits die notwendigen Module, in Drupal 7 kann diese Funktionalität mit Zusatzmodulen erreicht werden. Mehr dazu hier.

Views cachen

Views können sehr komplex und entsprechend ressourcenhungrig sein. Deshalb sollte man solche Views cachen, die Einstellungen dafür sind im Bereich »Erweitert« versteckt.

Drupal Views Cache

Theme optimieren

Viele kommerziell erhältliche Themes verwenden eine Menge von Javascript- und CSS-Dateien (oft für allerlei unötiges Bling-Bling), die jedoch nicht zwangsläufig benötigt werden. Ein Blick in die Info-Datei des Themes gibt Aufschluß, denn dort werden die JS- und CSS-Dateien aufgelistet. Häufig finden sich dort Plugins, die gar nicht eingesetzt werden. Wer sich nicht sicher ist, kann die Dateien probeweise auskommentieren und dann die Seite dann testen.

Ferner kann man die Kommentare und Leerzeilen aus den Templates und CSS-Dateien entfernen.

Module aufräumen

In vielen Sites finden sich unbenutze Module, welche somit die Ladezeit unnötig verschlechtern. Insbesondere dann, wenn die Module für die Ausgabe eigene CSS- oder Javascript-Dateien besitzen. Nicht benötigte Module sollten möglichst de-installiert werden.

Ahnliches gilt auch für einige System-Module, welche die Performance mindern. Das sind insbesondere Statistics, Logging und Views-UI, diese Module können im Produktionsbetrieb oft deaktiviert werden.

Weitere Optionen

Es gibt noch weitere Möglichkeiten die Geschwindigkeit von Drupal zu verbessern, aber die stehen in einer Shared-Hosting-Umgebung meist nicht zur Verfügung oder bringen nur noch einen sehr kleinen Geschwindigskeits-Vorteil, der nur bei sehr hoch frequentierten Websites wirklich von Nutzen ist.

  • Drupal war schon immer ein »Ram Hog«. Mehr Speicher für PHP-Scripte kann hier einiges bewirken
  • Einstellungen von MySQL optimieren