um die auslieferung von gleichbleibenden / statischen inhalten so sinnvoll wie möglich zu gestalten, kann und sollte man die cache kontrolle per .htaccess anpassen. die übertragenen inhalte werden also mit einer längeren gültigkeit / cache zeit an den client übertragen. zum einen beschleunigt das die ladezeiten, zum anderen senkt es die last und den traffic des servers.
Cache-Control – mod_headers
für die hier vorgestellte variante bedarf es dem apache module headers.
~#: a2enmod headers
~#: /etc/init.d/apache2 force-reload
aufgrund der dateiendung wird nun der Cache-Control eintrag modifiziert (oder auch nicht) und abschließend dem client übermittelt. sinnvollerweise sollte man die regeln auch auf javascript dateien und css deklarationen ausdehnen. welche lebenszeit man der datei letzten endes verpasst liegt einzig an den änderungen
<ifmodule mod_headers.c>
<FilesMatch “\.(gif|jpe?g|png|swf)$”>
FileETag -INode MTime Size
Header unset Last-Modified
Header set Cache-Control “max-age=604800, public”
Header set Expires “Thu, 31 Dec 2012 20:00:00 GMT”
</FilesMatch>
</ifmodule>
Cache-Control – mod_expires
eine weitere / zweite möglichkeit um die cache-control einstellungen zu modifizieren bietet das apache module expires. vermeintlich sollte man sich vorher natürlich für eine entscheiden da eine duale nutzung relativ sinnfrei ist.
~#: a2enmod expires
~#: /etc/init.d/apache2 force-reload
wie der name vermuten lässt, ist das module expires nur für die einstellungen des verfalls der ausgelieferten daten zuständig. das nachfolgende beispiel ist das mod_headers pendant, bewirkt also so ziemlich genau das gleiche.
<ifmodule mod_expires.c>
ExpiresActive On
ExpiresDefault “access plus 1 seconds”
ExpiresByType image/x-icon “access plus 604800 seconds”
ExpiresByType image/jpeg “access plus 604800 seconds”
ExpiresByType image/png “access plus 604800 seconds”
ExpiresByType image/gif “access plus 604800 seconds”
ExpiresByType application/x-shockwave-flash “access plus 604800 seconds”
</ifmodule>
Content-Encoding – mod_deflate
um den content noch ein wenig zu packen und somit den wirklich entstehenden traffic zu senken, bietet sich das apache module deflate an.
~#: a2enmod deflate
~#: /etc/init.d/apache2 force-reload
nun könnte man prinzipiell alles, insofern der browser gzip codierte inhalte akzeptiert ausliefern. allerdings ist das packen von aktuellen bildformaten kontraproduktiv, da diese formate bereits auf das notwendige reduziert sind. wesentlich sinnvoller ist das packen von textinhalten, also css deklarationen, javascripten und webseiten.
<ifmodule mod_deflate.c>
<FilesMatch “\.(css|js|html?|php)$”>
SetOutputFilter DEFLATE
</FilesMatch>
</ifmodule>
welche dateien es nun lohnt zu cachen und / oder zu packen liegt am projekt und der dahinter liegenden umsetzung.


