Wie kann man feststellen, ob mod_deflate tatsächlich funktioniert?

Wie kann man feststellen, ob mod_deflate tatsächlich funktioniert?

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

MitLogLevelWenn 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

verwandte Informationen