Webserver-Regressionstests mit siege – Ideenschmiede

Heute wurde mein Artikel über Webserver-Regressionstests mit siege auf dem LOTUM-Blog Ideenschmiede veröffentlicht. Ich beschreibe darin, wie man siege installiert und Belastungstests startet.

Auf das Thema bin ich gekommen, da ich in den letzten Tagen u.a.  einige Webserver (Apache, Lighttpd, G-WAN, nginx, Cherokee) getestet habe und mit verschiedenen Konfigurationen “gespielt” habe.

Buch: High Performance Websites

Der Yahoo-Mitarbeiter Steve Souders beschreibt in seinem Buch “High Performance Websites” 14 grundlegene Regeln für Performance-Verbesserungen von Websites. Dabei werden auch die größten US-Websites im Jahr 2008 verglichen.

Sehr kurze Zusammenfassung:

  • Nicht benötige Inhalte und Resourcen entfernen
  • Resourcen zusammen fassen und komprimieren
  • Elemente zur “richtigen Zeit” laden (CSS im Header, Javascript im Footer)
  • Caching erlauben

Das Buch ist zwar relativ dünn, in dem Thema aber doch ausführlicher, als meine wenigen Punkte. Interessant fande ich, dass manche Punkte von den Website-Besuchern abhängen: Z.B. wie oft wird ein Auftritt von einem Benutzer aufgerufen und welche bzw. wie viele Seiten werden geladen?

Zu dem Buch gibt es auch eine Fortsetzung, “Even Faster Websites”.

Performance-Optimierung einer TYPO3-Seite – ein Zwischenstand

Ich bin wieder einen Schritt weiter in der Performance-Optimierung einer TYPO3-Seite.

Am meisten genutzt hat dabei die Aktivierung von Expires-Header, die den Browser anleiten bestimmte Elemente (Bilder, Javascript, usw.) zu Cachen. Falls nicht bereits für den Webserver global aktiviert kann man die Einstellungen in der .htaccess-Datei vornehmen. Ein Beispiel gibt es auf snipplr.com.

Weiterhin gilt es unnötigen Code zu entfernen. Das gilt für CSS, Javascript, aber auch nicht benötigte TYPO3-Extension sollte man deaktivieren.

Die Website sollte möglichst aus Cache-baren Elementen bestehen, wenn möglich sollte man in TYPO3 auf USER_INT, COA_INT usw. verzichten.

Für Cache-bare Resourcen wie Bilder kann man eine “statische” Subdomain einrichten, etwa static.meinedomain.com. Für diese Anfragen werden keine Cookie-Daten mitgesendet.

Durch diese Punkte hat sich das Ergebnis in YSlow, einer Firefox-Erweiterung, von Note D oder E auf B verbessert.

Nun habe ich die TYPO3-Extension scriptmerger aktiviert. Je nach Konfiguration muss vor der Aktivierung die .htaccess-Datei erneut erweitert werden (siehe Doku). scriptmerger kann jeweils alle Javascript und alle CSS-Dateien verkleinern, zusammenfassen und komprimieren. Unter Umständen muss man einige Funktionen deaktivieren, wenn diese nicht vom Server unterstützt werden oder den Code anpassen. Mehr zu scriptmerger gibt es z.B. auf typo3blogger.de.
Die Ergänzung verbessert die YSlow-Note auf A. Die Methode musste aber auf vereinzelten größeren Seiten abgeschwächt werden, da sonst die PHP-Speichergrenze erreicht wird (PHP-Fehler, Script-Abbruch).

Dies muss jedoch nicht das Ende der Performance-Verbesserung sein. Hier mal ein paar mögliche weitere Schritte:

  • Quelltext-Optimierung
  • Sprites einsetzen: mehrere Hintergrund-Grafiken zusammenfassen
  • Auslieferung von statischen Webseiten
  • CDN verwenden
  • MySQL-/Datenbank-Optimierung