Den Browsercache steuern mit apache2 und mod_expires

2011-03-26 - kostaki 1 Kommentar »

Der Browsercache ist eine super Erfindung um die Ladegeschwindigkeit einer Website zu verringern wenn man ihn anständig befüllt. Der Apache2 bringt dafür das mod_expires Modul mit, das nur aktiviert werden muss.

$ a2enmod expires
$ /etc/init.d/apache2 restart

Theoretisch kann man nun in der Apache Config das Caching einstellen, das würde ich aber nicht vorschlagen. Es ist besser wenn man das Caching direkt in den einzelnen Vhosts löst und damit für jede Seite extra.

Ein Beispiel: Bei einem Projekt von mir liegen Statics Dateien (Bilder, CSS, JS, Flash) in einem extra Vhost. Diese Daten sind wunderbar um sie im Browsercache vor zuhalten. Ich möchte aber nicht das die HTML Dateien gecached werden, da sie sich zu schnell verändern und ich immer die aktuelle Version ausliefern möchte. Deshalb ist das Caching nur in dem Statics Vhost aktiviert.

$ nano /etc/apache2/sites-enabled/vh-statics
   <IfModule mod_expires.c>
        # turn on the module for this directory
        ExpiresActive on

        # cache common graphics
        ExpiresByType image/jpg "access plus 10 years"
        ExpiresByType image/gif "access plus 10 years"
        ExpiresByType image/jpeg "access plus 10 years"
        ExpiresByType image/png "access plus 10 years"

        # cache CSS
        ExpiresByType text/css "access plus 10 years"

        # cache other filetypes
        ExpiresByType text/javascript "access plus 10 years"
        ExpiresByType application/javascript "access plus 10 years"
        ExpiresByType application/x-shockwave-flash "access plus 10 years"
   </IfModule>

Da sich diese Dateien niemals ändern (wenn sie sich ändern bekommen sie einen neuen Namen), kann ich sie mit access plus 10 years versehen. Testen kann man es wieder perfekt mit Firebug.

Firebug Expire Header

Related Links

  1. Ein Kommentar

  2. Sabrina
    schrieb am 16.03.2015 um 23:02 Uhr

    Vielen Dank für die präzise Erklärung zu mod_expires.

Kommentar schreiben

*

*