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-unsubscr...@httpd.apache.org
           sonstige Anfragen an users-de-h...@httpd.apache.org
--------------------------------------------------------------------------

Antwort per Email an