Подтвердить что ты не робот

Как отключить сжатие gzip Apache для некоторых медиафайлов в файле .htaccess?

Я хотел бы отключить сжатие gzip для некоторых медиафайлов, которые уже сжаты на сервере Apache через файл .htaccess.
Причина: как написано напр. jPlayer site, gzip-кодировка должна быть отключена для медиафайлов: "Медиа файлы уже сжаты, а GZIP будет просто расточительным CPU на вашем сервере. Плагин Adobe Flash будет испытывать проблемы, если вы GZIP-носители".

В настоящее время у меня проблема с тем, что заголовок Content-Length неправильно установлен, когда включен gzip, поэтому при воспроизведении некоторых mp3 файлов с SoundManager2, индикатор выполнения трека не работает должным образом (возможно, проблема, о которой они рассказали на сайте jPlayer).

Я могу проверить, поддерживается ли контент gzipped здесь.
У меня есть модули mod_deflate, mod_mime и mod_rewrite, включенные на сервере.
Согласно phpinfo(), вот список всех загруженных модулей:

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

Я использую Drupal 6, поэтому у меня уже есть RewriteRule, который выглядит следующим образом:

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

Я уже пытался отключить gzip, но они не работали (есть 6 разных попыток!), возможно, некоторые из них должны быть установлены глобально в Apache httpd.conf?!):

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

Единственный, который работает правильно и отключает сжатие gzip, НО он глобальный:

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

Ответные заголовки для mp3 файла, когда НЕ используют этот RewriteRule: http://pastebin.com/AkUZ6m5Y
Ответные заголовки для mp3 файла при использовании этого RewriteRule: http://pastebin.com/b8j3NF6D

4b9b3361

Ответ 1

Мне пришлось отключить сжатие для файлов odp для использования внешним плагином Просто добавлено следующее правило в файле .htaccess

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

И сервер отключил сжатие для файлов odp Обязательно очистите кеш браузера перед тестированием

Ответ 2

Разве вы не ошибетесь, используя директиву SetOutputFilter DEFLATE, а затем попытаетесь отключить это для потока, который уже включает в себя некоторую форму compresstion? Не проще ли не использовать эту директиву, а затем сжать сжатый поток. Например.

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

И, возможно, добавление заголовка Vary:

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

OK это может пропустить нечетный тип, о котором вы не думали, но он достигнет 99% от вашего потенциала сжатия.

Ответ 3

Я думаю, что вы не используете сжатие в своих медиа. Вы проверяли, что вы фактически делетируете файлы? Модуль может быть загружен в память, но это не означает, что он сжимает файлы. Если ваш .htaccess только переписал правила, возможно, вы не сжимаете какой-либо контент.

Ответ 4

это кажется устаревшим: https://www.varnish-cache.org/docs/3.0/tutorial/compression.html#gzip-and-esi

GZIP и ESI

Если вы используете Edge Side Includes, вы с радостью заметите, что ESI и GZIP работают вместе очень хорошо. Лак волшебным образом распаковывается содержимое для обработки ESI, а затем повторно скомпоновать его для эффективного хранения и доставки.

Ответ 5

Чтобы отключить сжатие gzip только на файлах Adobe Flash Player (SWF) на моем сервере Apache, я добавил это в мой .htaccess файл:

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

Если вы захотите, вы можете отключить сжатие gzip для других типов файлов:

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

Ответ 6

Я знаю, что эта ветка устарела, но я прошел один и тот же путь.

Две вещи, которые я сделал.

  • Я включил .htaccess и отключил gzip для папки.

    <Files "*.gz.asc">
         RemoveEncoding .gz
     </Files>
    
  • установите правило reqwrite для отключения

    RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1] 
    

Обе из них работали для меня. Я предлагаю сначала перейти к документации Apache, прежде чем искать на форумах.

для получения дополнительной информации перейдите на сайт Apache.

https://httpd.apache.org/docs/2.4/mod/mod_deflate.html https://httpd.apache.org/docs/2.4/mod/mod_mime.html#addtype