
Ich habe Folgendes in meine http.conf-Datei eingefügt:
# mod_deflate configuration
<IfModule mod_deflate.c>
# Restrict compression to these MIME types
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css
# Level of compression (Highest 9 - Lowest 1)
DeflateCompressionLevel 9
# 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 \bMSI[E] !no-gzip !gzip-only-text/html
<IfModule mod_headers.c>
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
Mein Inhalt wird nicht mit einer Inhaltskodierung vom Typ gzip zurückgegeben, aber ich bekomme viel mehr 304-Fehler und an das Etag wird ein +gzip-Suffix angehängt. Erfüllt mod_deflate tatsächlich seinen Zweck? (Tut mir leid, dass ich so n00bhaft bin)
Antwort1
Was sagen Ihnen die Header? Wenn nicht „content-encoding: gzip“ zurückgegeben wird, funktioniert es wahrscheinlich nicht. Sie können es wie folgt testen:
curl -I -H 'Accept-Encoding: gzip,deflate' http://yoursite.com/somefile
Antwort2
Die Apache-Dokumentation fürAusgabefilter nach Typ hinzufügengeben an, dass diese Anweisung in Apache httpd 2.1 und höher veraltet ist und nicht immer gut funktioniert, wenn Apache den MIME-Typ nicht bestimmen kann.
Ich würde vorschlagen, die Komprimierung zu aktivieren, indem Sie als Ausgangspunkt etwa Folgendes verwenden und dann alle Browser-Optimierungen und Komprimierungsstufen wieder hinzufügen. Natürlich sollten Sie httpd.conf noch einmal überprüfen, um sicherzustellen, dass auch mod_deflate.so tatsächlich geladen wird:
<Location />
SetOutputFilter DEFLATE
# Don't compress images
SetEnvIfNoCase Request_URI \.(?:gif|png|jpg|jpeg)$ no-gzip dont-vary
Header append Vary User-Agent env=!dont-vary
</Location>
Verwenden Sie zur Überprüfung cURL, wie von Michael Steinfeld erwähnt.
Antwort3
Ich kann keinen Kommentar hinzufügen, da mein Ruf nicht ausreicht. Deshalb schreibe ich dies als Antwort.
Die ursprüngliche Antwort von Michael Steinfeld gab den folgenden Fehler aus (in der Windows-Eingabeaufforderung)
curl: (6) Could not resolve host: gzip,deflate'
Ich habe es gelöst, indem ich das Leerzeichen nach dem Doppelpunkt entfernt habe:
curl -I -H 'Accept-Encoding:gzip,deflate' http://yoursite.com/somefile
Antwort4
MitLogLevel
Wenn auf gesetzt ist debug
, loggt mod_deflate seine Debugmeldungen inErrorLog
. Jede Ressource, die komprimiert wird, wird dort abgemeldet. Ob mod_deflate funktioniert, können Sie in Echtzeit sehen mit
tail -f /path/to/error-log | grep deflate
z.B
[Mi 22. Apr 05:37:49.742615 2015] [deflate:debug] [pid 22627] mod_deflate.c(849): [client 127.0.0.1:55667] AH01384: Zlib: 10700 auf 2637 komprimiert: URL /web/js/common.js, Referrer:http://localhost/index.php