it-swarm.com.de

Wie deaktiviere ich die Apache gzip-Komprimierung für einige Mediendateien in der .htaccess-Datei?

Ich möchte die gzip-Komprimierung für einige Mediendateien deaktivieren, die bereits auf einem Apache-Server über die Datei .htaccess komprimiert wurden.
Grund: wie es z. Die jPlayer-Site , gzip-Kodierung sollte für Mediendateien deaktiviert sein: "Mediendateien sind bereits komprimiert und das GZIP verschwendet nur CPU auf Ihrem Server. Beim Adobe Flash-Plugin treten Probleme auf, wenn Sie das Medium GZIP-fähig machen."

Ich habe momentan das Problem, dass der Content-Length-Header nicht richtig gesetzt ist, wenn gzip aktiviert ist. Wenn Sie also einige MP3-Dateien mit einem SoundManager2 -Player abspielen, funktioniert der Längenfortschrittsbalken des Tracks nicht richtig (also ist es vielleicht der Problem, über das sie auf der jPlayer-Website berichtet haben).

Ich kann testen, ob ein Inhalt gzippt wird hier .
Ich habe mod_deflate-, mod_mime- und mod_rewrite-Module auf dem Server aktiviert.
Laut phpinfo () ist hier eine Liste aller geladenen Module:

core mod_log_config mod_logio itk http_core mod_so mod_alias mod_auth_basic mod_authn_file mod_authz_default mod_authz_groupfile mod_authz_Host mod_authz_user mod_autoindex mod_cgi mod_dav mod_dav_svn mod_authz_svn mod_deflate mod_dir mod_env mod_mime mod_negotiation mod_php5 mod_reqtimeout mod_rewrite mod_setenvif mod_ssl mod_status

Ich verwende Drupal 6, also Ich habe bereits eine RewriteRule , die wie folgt lautet:

# Rewrite URLs of the form 'x' to the form 'index.php?q=x'.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ index.php?q=$1 [L,QSA]

Ich habe bereits versucht, gzip zu deaktivieren, aber sie haben nicht funktioniert (es gibt 6 verschiedene Versuche! - Vielleicht müssten einige davon global in Apaches httpd.conf gesetzt werden ?!):

  • # http://www.cyberciti.biz/tips/speed-up-Apache-20-web-access-or-downloads-with-mod_deflate.html
    SetOutputFilter DEFLATE
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.(?:exe|t?gz|Zip|bz2|sit|rar)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary    
    
  • ## Step 2. here: http://www.mydigitallife.info/how-to-enable-mod_deflate-gzip-compression-on-cpanel-web-hosts/
    <IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    
    RemoveOutputFilter mp3
    # Don’t compress already-compressed files
    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI .(?:exe|t?gz|Zip|bz2|sit|rar)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI .(?:avi|mov|mp3|mp4|rm|flv|swf|mp?g)$ no-gzip dont-vary
    SetEnvIfNoCase Request_URI .pdf$ no-gzip dont-vary
    </IfModule>
    
  • RemoveOutputFilter mp3
    
  • # for files that end with ".mp3"
    <FilesMatch \.mp3$>
    SetEnv no-gzip 1
    </FilesMatch>
    
  • RewriteRule \.mp3$ - [NS,E=no-gzip:1,E=dont-vary:1]
    
  • RewriteRule ^((.*)\.mp3)$ $1.mp3 [NS,E=no-gzip:1,E=dont-vary:1]   
    

Die einzige, die richtig funktioniert und die gzip-Komprimierung deaktiviert, ABER es ist global:

  • RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
    

Antwort-Header für eine MP3-Datei, wenn diese RewriteRule NICHT verwendet wird: http://Pastebin.com/AkUZ6m5Y
Antwort-Header für eine MP3-Datei bei Verwendung dieser RewriteRule: http://Pastebin.com/b8j3NF6D

15
Sk8erPeter

Ich musste die Komprimierung für odp-Dateien für die Verwendung durch ein externes Plugin Deaktivieren. Die folgende Regel wurde in der .htaccess-Datei hinzugefügt 

SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.odp$ no-gzip dont-vary

Und der Server hat die Komprimierung für odp-Dateien deaktiviert. Stellen Sie sicher, dass der Browser-Cache vor dem Testen geleert wird

6
Lohith

Gehen Sie nicht falsch herum, indem Sie die Direktive SetOutputFilter DEFLATE verwenden und dann versuchen, dies für Stream zu deaktivieren, der bereits eine Form der Komprimierung enthält? Ist es nicht viel einfacher nicht , diese Direktive zu verwenden und dann den komprimierbaren Stream zu komprimieren. Z.B.

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript application/ecmascript application/rss+xml
</IfModule>

Und möglicherweise Hinzufügen eines Vary-Headers:

<IfModule mod_headers.c>
    <FilesMatch "\.(js|css|xml|html)$">
        Header append Vary Accept-Encoding
    </FilesMatch>
</IfModule>

OK, dies könnte den ungeraden Typ vermissen, an den Sie nicht gedacht haben, aber er wird 99% des Kompressionspotentials erreichen.

2
TerryE

Um die gzip-Komprimierung nur für Adobe Flash Player-Dateien (SWFs) auf meinem Apache-Server zu deaktivieren, habe ich dies meiner .htaccess-Datei hinzugefügt:

<IfModule mod_headers.c>
    <FilesMatch "\.swf$">
        RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
    </FilesMatch>
</IfModule>

Wenn Sie möchten, können Sie die gzip-Komprimierung auch für andere Dateitypen deaktivieren:

<IfModule mod_headers.c>
    <FilesMatch "\.(js|css|swf)$">
        RewriteRule ^(.*)$ $1 [NS,E=no-gzip:1,E=dont-vary:1]
    </FilesMatch>
</IfModule>

Ich denke, Sie verwenden keine Komprimierung in Ihren Medien. Haben Sie überprüft, ob Sie tatsächlich Dateien deflationieren? Das Modul kann in den Speicher geladen werden, was jedoch nicht bedeutet, dass Dateien komprimiert werden. Wenn Ihr .htaccess nur Regeln zum Umschreiben enthält, besteht die Möglichkeit, dass Sie keine Inhalte komprimieren.

0

dies scheint veraltet zu sein: https://www.varnish-cache.org/docs/3.0/tutorial/compression.html#gzip-and-esi

GZIP und ESI

Wenn Sie Edge Side Includes verwenden, werden Sie erfreut feststellen, dass ESI Und GZIP wirklich gut zusammenarbeiten. Der Lack dekomprimiert Den Inhalt auf magische Weise, um die ESI-Verarbeitung durchzuführen, und komprimiert ihn anschließend erneut, um eine effiziente Lagerung und Auslieferung zu gewährleisten.

0
Bruno