Назад | Перейти на главную страницу

mod_deflate - Оптимальная конфигурация для большинства браузеров

Мне было интересно, может ли кто-нибудь здесь помочь мне определить оптимальную стандартную конфигурацию для использования 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