Mit der Firefox Erweiterung Page Speed, welche von Google vor kurzem veröffentlicht wurde, sowie dem Addon YSlow von Yahoo stößt man immer wieder auf die zwei gleichen Meldungen:

  • Leverage browser caching
  • Enable gzip compression

Zwei Apache Module, welche per default auch meist verfügbar sind, schaffen hier Abhilfe. Die Rede ist von mod_deflate und mod_expires. Beide sind im Handumdrehen konfiguriert und bringen einen guten Performanceschub.

mod_deflate sorgt dafür, dass die Inhalte, welche vom Apache Webserver zum Client gesendet werden, zuvor komprimiert werden. Die Konfiguration ist denkbar einfach und kann in der .htaccess Konfigurationsdatei hinterlegt werden. Folgende Konfiguration ist dem Apache Manual entnommen und so auch bei mir im Einsatz:

<IfModule mod_deflate.c>
	# Insert filter
	SetOutputFilter DEFLATE

	# Netscape 4.x has some problems...
	BrowserMatch ^Mozilla/4 gzip-only-text/html

	# Netscape 4.06-4.08 have some more problems
	BrowserMatch ^Mozilla/4.0[678] no-gzip

	# MSIE masquerades as Netscape, but it is fine
	# BrowserMatch bMSIE !no-gzip !gzip-only-text/html

	# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
	# the above regex won't work. You can use the following
	# workaround to get the desired effect:
	BrowserMatch bMSI[E] !no-gzip !gzip-only-text/html

	# Don't compress images
	SetEnvIfNoCase Request_URI
	.(?:gif|jpe?g|png)$ no-gzip dont-vary

	# Make sure proxies don't deliver the wrong content
	Header append Vary User-Agent env=!dont-vary
</IfModule>

mod_expires erlaubt es ein Verfallsdatum für den Cache zu setzen. Folgende Konfiguration habe ich Jörns Blog entnommen (der mich zu diesem Eintrag inspiriert hat):

<IfModule mod_expires.c>
	ExpiresActive On
	ExpiresByType text/html "access plus 2 houres "
	ExpiresByType text/xml "access plus 2 houres"
	ExpiresByType image/gif "access plus 3 weeks"
	ExpiresByType image/jpg "access plus 2 weeks"
	ExpiresByType image/png "access plus 3 weeks"
	ExpiresByType video/quicktime "access plus 2 months"
	ExpiresByType audio/mpeg "access plus 2 months"
	ExpiresByType application/pdf "access plus 2 weeks"
	ExpiresByType application/ps "access plus 2 weeks"
	ExpiresByType application/xml "modification plus 2 weeks"
</IfModule>

Durch die IfModule Direktiven ist auch sichergestellt, dass auf die Konfiguration verzichtet wird, wenn die Module nicht vorhanden sind.

Viel weiter habe ich mich zu dem Thema nicht eingelesen, bin mir aber sicher, dass man hier noch einiges mehr herausholen und machen kann. Auf meiner Wunschliste steht zu dem Thema noch das Buch High Performance Websites. Ein erstes Durchblättern hat gezeigt, dass hier noch einiges im Verborgenen liegt. Meistens so unkompliziert wie diese beiden Konfigurationen in die eigene .htaccess hinein zu kopieren. Kommentare zu diesem Thema sind also erwünscht. Wer hier bereits Erfahrung gesammelt hat und etwas empfehlen kann einfach diesen Beitrag kommentieren.

Hinterlasse eine Antwort