Мне было интересно, может ли кто-нибудь здесь помочь мне определить оптимальную стандартную конфигурацию для использования mod deflate с Apache. Как правило, mod_deflate рекомендует сразу же использовать следующую конфигурацию:
Сжать только несколько видов
AddOutputFilterByType DEFLATE text / html text / plain text / xml http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
Однако, просто прочитав документ, вы можете настроить это для всех браузеров. Кроме того, вы можете настроить mod_deflate для всех типов mime-типов. Мне было интересно, экспериментировал ли кто-нибудь с этими настройками и нашел настройку, оптимальную для всех браузеров.
Другой пример, который предоставляет Apache, но не используйте его, если вы не понимаете все параметры конфигурации:
<Location />
# Insert filter
SetOutputFilter DEFLATE
# 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 \bMSIE !no-gzip !gzip-only-text/html
# NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48
# the above regex won't work. You can use the following
# workaround to get the desired effect:
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html
Я понимаю большинство настроек конфигурации и хотел бы настроить что-то подобное. Я бы не отказался от сжатия изображений и других медиа, которые уже сжаты. Детали, с которыми у меня проблемы, это понимание того, как это реагирует на все различные браузеры, Chrome, Firefox, IE, Opera и т.д ... Очевидно, меня не интересует Netscape 4.X. Я надеюсь, что кто-то уже проверил все это и может порекомендовать хорошую настройку, соответствующую этим критериям.
Я имею в виду, что если это просто вопрос использования рекомендованных в документе настроек, меня это устраивает, но я хотел проверить, чтобы убедиться.
Просто чтобы предоставить несколько дополнительных деталей. Мы используем Apache в качестве прикрытия для всех наших веб-сервисов. Например: confluence, git, gitweb и т. Д.
Tomcat и другие сервисы передаются через Apache, поэтому у нас есть конфигурации для виртуальных хостов, mod_proxy с AJP, mod_ssl.
В моей компании нет специализированной ИТ-команды, поэтому мне приходится настраивать большую часть этого в свободное время. Буду признателен за любой вклад, который вы можете предоставить.
Итак, чтобы четко указать, о чем я спрашиваю, какова оптимальная конфигурация для обработки базового контента, необходимого для обслуживания запросов от Apache к основным браузерам?
Мой список основных типов контента на данный момент:
Типы, которые явно не нужно сжимать:
Я пошел дальше и исследовал это. После прочтения нескольких руководств и документации Apache я смог собрать воедино что-то существенное, что, кажется, работает хорошо. Используя приведенный выше список, я собрал набор правил / декларативов, которые, похоже, обрабатывают сжатие с основными типами контента:
<Location />
# Insert filter
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/x-js text/javascript text/css
AddOutputFilterByType DEFLATE application/xml application/xhtml+xml application/x-javascript application/javascript
AddOutputFilterByType DEFLATE application/json
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
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
</Location>
Для тестирования я в основном использовал TamperData для Firefox и включил ведение журнала deflate для apache:
https://addons.mozilla.org/en-US/firefox/addon/tamper-data/
Для Apache добавьте следующее:
# For Testing Purposes
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
#LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate
http://httpd.apache.org/docs/2.0/mod/mod_deflate.html#deflatefilternote