Geschwin­dig­keit einer Web­site ist ein wich­ti­ger Fak­tor für die User Expe­ri­ence einer Web­site. Und seit Anfang des Jah­res natür­lich auch ein wich­ti­ger Fak­tor für das Google Ran­king einer Web­site.

Word­Press ist Out-of-the-box nicht unbe­dingt ein Per­for­mance Biest. Aber mit ein wenig Tuning ist das schon recht gut hinzukriegen.

Fol­gende Auf­ga­ben sind bei der Opti­mie­rung zu erledigen:

  • Caching der gene­rier­ten Word­Press Seiten
  • Zusam­men­fas­sen von Java­script und CSS Dateien in jeweils eine Datei
  • Akti­vie­rung des Cachings von sta­ti­schen Dateien

Die ers­ten bei­den Auf­ga­ben habe ich mit­hilfe von zwei Word­Press Plugins rea­li­siert: WP Super Cache und WP Minify. Die dritte Auf­gabe lässt sich auf einem Shared Hos­ting Ser­ver mit Hilfe von .htac­cess realisieren.

Über WP Super Cache habe ich ja bereits geschrie­ben, aller­dings ist jetzt eine neue Kon­fi­gu­ra­ti­ons­mög­lich­keit hin­zu­ge­kom­men. Seit neu­es­tem kann man auto­ma­tisch für alle Word­Press Sei­ten sta­ti­sche Abbil­der der Seite im Vor­aus gene­rie­ren. Ich habe es so kon­fi­gu­riert, dass die Caches auto­ma­tisch alle zwei Stun­den neu gene­riert werden.

WP Minify fasst alle in einem Tem­plate vor­han­de­nen CSS und Java­script Files auto­ma­tisch zusam­men. Das Plu­gin musste ich nur instal­lie­ren und schon funk­tio­nierte es einwandfrei.

Die letzte Auf­gabe, das Caching von sta­ti­schen Dateien, lässt sich durch ein­fa­ches Ein­fü­gen von fol­gen­dem Code in die .htac­cess Datei akti­vie­ren. Die Dateien wer­den für zwei Monate gecacht, das lässt sich aber natür­lich anpassen.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Expire headers 5184000 Sekunden = 2 Monate
<ifmodule mod_expires.c>
ExpiresActive On
ExpiresByType image/x-icon "access plus 5184000 seconds"
ExpiresByType image/gif "access plus 5184000 seconds"
ExpiresByType image/jpg "access plus 5184000 seconds"
ExpiresByType image/png "access plus 5184000 seconds"
ExpiresByType text/css "access plus 5184000 seconds"
ExpiresByType text/javascript "access plus 5184000 seconds"
ExpiresByType application/javascript "access plus 5184000 seconds"
ExpiresByType application/x-javascript "access plus 5184000 seconds"
</ifmodule>
 
# BEGIN Cache-Control Headers
<ifmodule mod_headers.c>
<filesmatch "\\.(ico|jpe?g|png|gif|swf)$">
Header set Cache-Control "max-age=5184000, public"
</filesmatch>
<filesmatch "\\.(css)$">
Header set Cache-Control "max-age=5184000, private"
</filesmatch>
<filesmatch "\\.(js)$">
Header set Cache-Control "max-age=216000, private"
</filesmatch>
</ifmodule>
 
# Turn ETags Off
<ifmodule mod_headers.c>
Header unset ETag
</ifmodule>
FileETag None

Durch diese Maß­nah­men hat sich die Per­for­mance mei­nes Blogs im Ver­gleich zu vor­her deut­lich gesteigert.