Durch die Verwendung eines Content Delivery Networks (CDN) kann eine Website weiter beschleunigt werden. Hierbei wird zur Auslieferung von Ressourcen auf einen Drittanbieter gesetzt, der hierauf spezialisierte Server zur Verfügung stellt. Kommt ein CDN zum Einsatz wird die Latenzzeit beim Zugriff auf Ressourcen verringert: Ein unabhängiges, über geographisch sinnvolle Standorte verteiltes Netzwerk von Caching Servern sorgt dafür, dass Inhalte für die Auslieferung nur möglichst kurze Routen zurücklegen müssen. Das senkt den Energieverbrauch der Netzinfrastruktur und beschleunigt die Auslieferung der Ressourcen. Drupal bietet durch die Verwendung von Modulen Anbindungen an diverse CDNs womit diese für Ressourcen innerhalb ihrer Drupal-Installation verwendet werden können.
JS und CSS aggregieren und minimieren
Durch die Auslieferung von minifiziertem Javascript und CSS kann Bandbreite gespart werden. Drupal ist modular aufgebaut, was zur Folge hat, dass jedes einzelne Modul CSS und JS mitliefert. Das führt dazu, dass häufig mehrere Dutzend Dateien übertragen werden müssen um eine Website darstellen zu können. Drupal bietet durch die Aggregation von CSS- und JS-Dateien eine nützliche Optimierung. Denn statt vieler kleiner Dateien muss nur eine große ausgeliefert werden, wodurch die Anzahl der Anfragen an den Server massiv reduziert werden kann.
Reduktion im Produktivsystem
Drupal 8 hat die Möglichkeit, für verschiedene Umgebungen einer Website verschiedene Konfigurationen zu nutzen. Beispielsweise kann einer Staging- oder Testumgebung eine andere Konfiguration zugrunde liegen, als dies für die Produktivumgebung der Fall ist. Die Konfiguration enthält praktisch alle veränderlichen Daten, die für Drupal notwendig sind, um funktionieren zu können.
Wir können die Performance von Drupal (wenn auch in neueren Versionen nur ein wenig) steigern, indem wir Module im Produktivsystem abschalten, die dort ohnehin keinen Nutzen erfüllen. Beispielsweise stellt Drupal durch Views ein mächtiges Werkzeug zur Verfügung, um dynamische Listen von Inhalten zu konfigurieren und diese in Form von Seiten oder Inhaltsblöcken in der Website anzuzeigen. Zusätzlich gibt es das Modul ViewsUI, die Nutzeroberfläche für Views. Damit können Views erstellt werden, was im Entwicklungsprozess praktisch ist. Zur Darstellung einer View ist das Modul aber nicht notwendig. Auf professionellen Seiten mit angeschlossenen Deployment Prozessen hat es ohnehin keinen Nutzen, weil Änderungen nur in lokalen Entwicklungsumgebungen erfolgen. Man kann also bestimmte Module in der Produktivumgebung deaktivieren, die dort nicht gebraucht werden. Denn alleine dadurch, dass ein Modul aktiviert ist, verschlechtert sich die Performance der Seite. Bei jedem einzelnen Modul sollte aber klar abgewogen werden, ob es tatsächlich nutzlos im Produktivsystem ist.
Optimaler Quellcode
Bei allen Eigenentwicklungen sollten wir darauf achten, dass wir unseren Code optimieren. Für viele Entwickler*innen mag das banal klingen, aber es ist deshalb nicht weniger wichtig! Wenn wir unseren Quellcode optimieren und beispielsweise unnötige Funktionsaufrufe einsparen und Zwischenergebnisse speichern statt Berechnungen immer wieder auf’s neue durchzuführen, sparen wir bei Berechnungen und Operationen wertvolle Rechenzeit. Die hierdurch erzielbare Energieeinsparung bei einer stark frequentierten Website oder einem viel genutzten Web-Service summiert sich schnell zu einer beeindruckenden Menge auf.
Beispiel gefällig? Hier einer meiner Lieblings-Anfängerfehler aus der Drupal-Welt: