web-dev-qa-db-fra.com

Comment désactiver la compression Apache gzip pour certains fichiers multimédias au format .htaccess?

Je souhaite désactiver la compression gzip pour certains fichiers multimédias déjà compressés sur un serveur Apache via le fichier .htaccess.
Raison: comme il est écrit p. Ex. Le site de jPlayer , le codage gzip devrait être désactivé pour les fichiers multimédias: "Les fichiers multimédias sont déjà compressés et le GZIP gaspille tout simplement le processeur de votre serveur. Adobe Flash Plugin rencontrera des problèmes si vous GZIP le média."

Je rencontre actuellement le problème suivant: l'en-tête Content-Length n'est pas correctement défini lorsque gzip est activé. Ainsi, lors de la lecture de certains fichiers MP3 avec SoundManager2 player, la barre de progression de la longueur de la piste ne fonctionne pas correctement. problème qu’ils ont raconté sur le site de jPlayer).

Je peux tester si un contenu est gzippé ici .
Les modules mod_deflate, mod_mime et mod_rewrite sont activés sur le serveur.
Selon phpinfo (), voici une liste de tous les modules chargés:

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

J'utilise Drupal 6, donc J'ai déjà un RewriteRule , qui est le suivant:

# 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]

J'ai déjà essayé ceux-ci pour désactiver gzip, mais ils ne fonctionnaient pas (il y a 6 tentatives différentes! - peut-être que certaines d'entre elles devraient être définies globalement dans le httpd.conf d'Apache ?!):

  • # 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]   
    

Le seul qui fonctionne correctement et désactive la compression gzip, MAIS il s'agit de global:

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

En-têtes de réponse pour un fichier mp3 lorsque vous n'utilisez PAS ce RewriteRule: http://Pastebin.com/AkUZ6m5Y
En-têtes de réponse pour un fichier mp3 lors de l’utilisation de cette règle RewriteRule: http://Pastebin.com/b8j3NF6D

15
Sk8erPeter

Je devais désactiver la compression des fichiers odp pour pouvoir être utilisée par un plugin externe Nous venons d'ajouter la règle suivante dans le fichier .htaccess 

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

Et le serveur a désactivé la compression des fichiers odp Assurez-vous de vider le cache du navigateur avant de tester

6
Lohith

N'allez-vous pas dans ce sens en utilisant la directive SetOutputFilter DEFLATE puis en essayant de le désactiver pour les flux qui incluent déjà une forme de compression? N’est-il pas beaucoup plus facile not d’utiliser cette directive puis de compresser le flux compressible. Par exemple.

<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>

Et éventuellement ajouter un en-tête Vary:

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

OK, cela risque de manquer le type étrange auquel vous n'avez pas pensé, mais cela vous permettra d'atteindre 99% ou plus de votre potentiel de compression.

2
TerryE

Pour désactiver la compression gzip uniquement sur les fichiers Adobe Flash Player (SWF) de mon serveur Apache, j'ai ajouté ceci à mon fichier .htaccess:

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

Si vous le souhaitez, vous pouvez également désactiver la compression gzip pour d’autres types de fichiers:

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

Je pense que vous n'utilisez pas la compression dans vos médias. Avez-vous vérifié que vous êtes en train de dégonfler des fichiers? Le module peut être chargé en mémoire, mais cela ne signifie pas qu'il compresse des fichiers. Si votre .htaccess a uniquement des règles de réécriture, il est probable que vous ne comprimiez aucun type de contenu.

0
Javier Constanzo

cela semble obsolète: https://www.varnish-cache.org/docs/3.0/tutorial/compression.html#gzip-and-esi

GZIP et ESI

Si vous utilisez Edge Side Includes, vous serez heureux de constater que ESI Et GZIP fonctionnent très bien ensemble. Varnish décompresse magiquement Le contenu pour effectuer le traitement ESI, puis le recompresse pour un stockage et une diffusion efficaces .

0
Bruno