You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users-de@httpd.apache.org by Peter Pöml <pe...@poeml.de> on 2010/08/24 00:31:14 UTC

Re: mod_deflate richtig einsetzen

Hallo,

Le 24.09.2009 à 21:35, Manfred Rebentisch a écrit :
> ich habe mod_deflate im Einsatz. Nun denke ich, Dateien wie CSS und JavaScript 
> müssen nicht bei jedem Request komprimiert werden. Wie macht man das richtig, 
> dass man gleich die komprimierte Datei sendet?
> 
> z.B. liegt "prototype.js.gz" neben "prototype.js" im Web-Dir. Ich habe eine 
> Rewrite-Regel im Netz gefunden und probiert, die funktioniert auch, nur dass 
> der Browser dann die gzip-Datei nicht auspackt. Der http-header kommt dann 
> wohl nicht richtig rüber.
> 
> 
> Ich arbeite nicht mit PHP, sondern mit statischen Dateien und mit eigenen 
> Apache-Modulen. Ich könnte JS-Request entgegen nehmen und die JS-Dateien mit 
> dem richtigen Header komprimiert versenden. Aber ich meine, dass es einfacher 
> gehen müßte, noch viel effizienter.
> 
> Danke für Tips
> 
> Manfred

(der Thread ist zwar schon ein Jahr alt, und ich hatte schon lange vor, ein paar Zeilen dazu zu schreiben. Dank Mailinglisten-Archiv kann es ja vielleicht immer noch jemandem nuetzen.)

Ich habe einmal eine aehnliche Konfiguration benoetigt, und ich habe keine Anleitung gefunden, die sowohl Komprimierung und Caching, als auch Varianten beruecksichtigt. Deshalb hatte ich mir damals vorgenommen, eine solche zu posten. Ich grabe sie hier also einmal aus. Die folgende Konfiguration hat bei mir hervorragend funktioniert, und ich hoffe, dass ich sie hier vollstaendig wiedergebe:


    <Directory /srv/www/www.example.com>
        ...

        # deflate all text files
        AddOutputFilterByType DEFLATE text/html text/plain text/css text/x-js
    </Directory>

    <IfModule mod_disk_cache.c>
        CacheRoot /var/cache/apache2
        CacheEnable disk /
        CacheDirLevels 5
        CacheDirLength 3
        CacheMinFileSize 1
        CacheMaxFileSize 10000000
        CacheIgnoreHeaders Set-Cookie Cookie Cache-Control Pragma
    </IfModule>

    # to make mod_cache work also on requests on '/':
    AliasMatch ^/$ /srv/www/vhosts/www.example.com/index.html


Es empfiehlt sich, Expires Kopfzeilen zu setzen, zB:

    ExpiresByType text/css "access plus 4 hours"
    ExpiresByType image/x-icon "access plus 4 weeks"
    ExpiresDefault "access plus 4 hours"

Bei statischen Dateien, die periodisch neu generiert werden, kann man die Expires-Zeit, passend dazu, absolut statt relativ gestalten. Bei einer Datei die alle 30 min neu generiert wird, waere zB "modification plus 32 minutes" eine passende Einstellung. Dadurch frische Daten zeitnah ausgeliefert, anstatt noch fruehere Versionen aus dem Cache zu senden.

Ein cron-Job entfernt veraltete Daten aus dem Cache:
-2 */6 * * *    root  htcacheclean -v -p /var/cache/apache2 -l 1 &> /dev/null

Peter
--------------------------------------------------------------------------
                Apache HTTP Server Mailing List "users-de" 
      unsubscribe-Anfragen an users-de-unsubscribe@httpd.apache.org
           sonstige Anfragen an users-de-help@httpd.apache.org
--------------------------------------------------------------------------