. .
Feb 2010

WordPress Geschwindigkeit: Teil 1

Im ersten Teil der Serie geht es um die Konfiguration der Serverseite, die mit den richtigen Informationen innerhalb von 5 Minuten zu erledigen ist und wesentlich zur gesteigerten Geschwindigkeit beiträgt.

Nach der Installation von WordPress auf einem neuen System, ist noch viel Optimierungspotential vorhanden. Ohne viel Aufwand ist das Caching und die Komprimierung der Inhalte möglich. Hat man Zugriff auf den Server und auf die Apache Konfiguration so ist dies einfach über die Module mod_expires und mod_deflate zu erreichen.

a2enmod expires

a2enmod deflate

Das Apache Modul expires setzt die entsprechenden HTTP Header mit Ablaufzeiten, so dass der Browser diese im lokalen Cache behält und nicht mit jedem Seitenwechsel neu lädt. Dies ist insbesondere bei Grafiken und CSS Dateien ein riesiger Geschwindigkeitsvorteil, der bei aktuellen Browsern dazu führt, dass fast kein Rendering beim Wechsel sichtbar ist.

Die Konfiguration könnte dabei wie folgt aussehen:

FileETag none
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 month"
 </IfModule>

Hierbei werden einerseits die ETags weggelassen, da sie in der Standardkonfiguration des Apache wenig Aussagekraft besitzen und andererseits die Ablaufzeiten der Ressourcen auf einen Monat gesetzt. Dabei ist zu beachten, dass Änderungen zum Beispiel an den CSS Dateien beim Besucher im schlimmsten Fall erst nach einem Monat bemerkt werden.

Das Apache Modul deflate komprimiert die Dateien vor der Übertragung. Dabei wird einerseits die benötigte Bandbreite reduziert und durch die kleineren Dateien ist die Übertragung wesentlich schneller. Dies führt im weiteren Verlauf zu einem ebenfalls beschleunigten Seitenaufbau.

Die Konfiguration könnte dabei wie folgt aussehen:

<IfModule mod_deflate.c>
 AddOutputFilterByType DEFLATE text/plain
 AddOutputFilterByType DEFLATE text/html
 AddOutputFilterByType DEFLATE text/xml
 AddOutputFilterByType DEFLATE text/css
 AddOutputFilterByType DEFLATE application/xml
 AddOutputFilterByType DEFLATE application/xhtml+xml
 AddOutputFilterByType DEFLATE application/rss+xml
 AddOutputFilterByType DEFLATE application/javascript
 AddOutputFilterByType DEFLATE application/x-javascript
 
 DeflateCompressionLevel 9
 
 BrowserMatch ^Mozilla/4 gzip-only-text/html
 BrowserMatch ^Mozilla/4.0[678] no-gzip
 BrowserMatch bMSIE !no-gzip !gzip-only-text/html
</IfModule>

Wichtig hierbei ist es die sinnvoll zu komprimierenden Dateitypen anzugeben und Browser ohne diese Funktion auszuschließen. Dies betrifft aber nur Browser, die schon lange nicht mehr im täglichen Einsatz sind. Die Komprimierungsraten sind gerade bei Textdateien erstaunlich hoch, was den Zweck dieser Maßnahme nur unterstreichen kann.

In weiteren Teilen wird das Tooling vorgestellt, mit dem die Performance verbessert und überprüft werden kann. Die WordPress Themes werden auch noch genauer unter die Lupe genommen, da hier oft auch noch Geschwindigkeit verschenkt wird. Da Bilder einen Großteil der Übertragungsmenge ausmachen wird sich ein Beitrag auch diesem Thema widmen.