<-
Apache > HTTP Server > Documentation > Version 2.0 > Modules

Apache Модуль mod_deflate

Description: содержание компресса прежде, чем это поставляют клиенту
Status: расширение
Module Identifier: deflate_module
Source File: mod_deflate.c

резюме

mod_deflate модуль обеспечивает DEFLATE фильтр продукции, который позволяет продукцию от вашего сервера быть сжатой прежде, чем быть посланным клиенту по сети.

директивы

темы

см. также

top

Sample Configurations

это - простая типовая конфигурация для нетерпеливого.

Compress only a few types

AddOutputFilterByType DEFLATE text/html text/plain text/xml

следующая конфигурация, в то время как приводящий к более сжатому содержанию, является также намного более сложной. Не используйте это, если Вы полностью не понимаете все детали конфигурации.

Compress everything except images

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

top

Enabling Compression

Output Compression

сжатие осуществлено DEFLATE filter . следующая директива позволит сжатие для документов в контейнере, куда это помещено:

SetOutputFilter DEFLATE

некоторые популярные браузеры не могут обращаться со сжатием всего содержания, таким образом Вы можете хотеть установить gzip-only-text/html отметить к 1 только позволять файлы html, которые будут сжаты (см. ниже). Если Вы устанавливаете это в что - нибудь, но 1 это будет игнорироваться.

если Вы хотите ограничить сжатие специфическими типами MIME вообще, Вы можете использовать AddOutputFilterByType директива. Вот - пример предоставления возможности сжатия только для файлов html Apacheской документации:

<Directory "/your-server-root/manual">
AddOutputFilterByType DEFLATE text/html
</Directory>

для браузеров, которые имеют проблемы даже со сжатием всех типов файла, используйте BrowserMatch директива, чтобы установить no-gzip отметить для того специфического браузера так, чтобы никакое сжатие не было выполнено. Вы можете объединиться no-gzip с gzip-only-text/html получить лучшие результаты. В том случае прежний отвергает последнего. Смотрите на следующую выдержку из configuration example определенный в секции выше:

BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

сначала мы исследуем для a User-Agent вереница, которая указывает версию Навигатора Netscape 4.x. Эти версии не могут обращаться со сжатием типов кроме text/html . версии 4.06, 4.07 и 4.08 также имеют проблемы с уменьшающими давление файлами html. Таким образом, мы полностью выключаем выкачивающийся фильтр для них.

третье BrowserMatch директива устанавливает предполагаемую идентичность пользовательского агента, потому что Microsoft Internet Explorer идентифицирует себя также как "Mozilla/4", но фактически в состоянии обращаться с требуемым сжатием. Поэтому мы соответствуем против дополнительной вереницы "MSIE" ( \b средства "граница слова") в User-Agent удар головой и выключает ограничения, определенные прежде.

отметить

DEFLATE фильтр всегда вставляется после фильтров РЕСУРСА как PHP или ПЕРВАЯ СТЕПЕНЬ ИНТЕГРАЦИИ. Это никогда не касается внутренних подзапросов.

Input Decompression

mod_deflate модуль также обеспечивает фильтр чтобы уменьшить давление gzip сжатое тело запроса. Чтобы активизировать эту особенность, Вы должны вставить DEFLATE фильтр во вход фильтрует использование цепи SetInputFilter или AddInputFilter , например:

<Location /dav-area>
SetInputFilter DEFLATE
</Location>

теперь, если запрос содержит a Content-Encoding: gzip удар головой, тело будет автоматически уменьшено давление. Немного браузеров имеют способность к телам запроса gzip. Однако, некоторые специальные заявления фактически поддерживают сжатие запроса, например некоторые WebDAV клиенты.

отметить на Довольной длине

если Вы оцениваете тело запроса самостоятельно, не доверять Content-Length удар головой! удар головой Довольной длины отражает длину поступающих данных от клиента и нет счет байта уменьшенного давление потока данных.

top

Dealing with proxy servers

mod_deflate модуль посылает a Vary: Accept-Encoding удар головой ответа HTTP, чтобы привести в готовность полномочия, что припрятавший про запас ответ нужно послать только клиентам, которые посылают соответствующее Accept-Encoding удар головой запроса. Это препятствует сжатому содержанию быть посланным клиенту, который не будет понимать это.

если Вы используете некоторые специальные исключения, зависящие, например, User-Agent удар головой, Вы должны вручную формировать дополнение к Vary удар головой, чтобы привести в готовность полномочия дополнительных ограничений. Например, в типичной конфигурации, где дополнение DEFLATE фильтр зависит User-Agent , Вы должны добавить:

Header append Vary User-Agent

если ваше решение о сжатии зависит от другой информации чем удары головой запроса ( например. версия HTTP), Вы должны установить Vary удар головой к ценности * . это препятствует послушным полномочиям прятать про запас полностью.

Example

Header set Vary *

top

DeflateBufferSize Directive

Description: размер фрагмента, который будет сжат однажды zlib
Syntax: DeflateBufferSize value
Default: DeflateBufferSize 8096
Context: сервер config, действительный хозяин
Status: расширение
Module: mod_deflate

DeflateBufferSize директива определяет размер в байтах фрагментов, которые zlib должен сжать однажды.

top

DeflateCompressionLevel Directive

Description: сколько сжатия делают мы обращаемся к продукции
Syntax: DeflateCompressionLevel value
Default: Zlib's default
Context: сервер config, действительный хозяин
Status: расширение
Module: mod_deflate
Compatibility: эта директива доступна начиная с Apacheа 2.0.45

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

ценность должна между 1 (меньше сжатия) и 9 (больше сжатия).

top

DeflateFilterNote Directive

Description: помещает степень сжатия в примечание для заготовки леса
Syntax: DeflateFilterNote [ type ] notename
Context: сервер config, действительный хозяин
Status: расширение
Module: mod_deflate
Compatibility: напечатать является доступным начиная с Apacheа 2.0.45

DeflateFilterNote директива определяет, что примечание о степенях сжатия должно быть присоединено к запросу. Название примечания - ценность, определенная для директивы. Вы можете использовать то примечание в статистических целях, добавляя ценность к вашему access log .

Example

DeflateFilterNote ratio

LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
CustomLog logs/deflate_log deflate

если Вы хотите извлечь более точные ценности из ваших регистраций, Вы можете использовать напечатать аргумент, чтобы определить тип данных, оставленных как примечание для заготовки леса. напечатать может быть один из:

Input
хранить счет байта потока входа фильтра в примечании.
Output
хранить счет байта потока продукции фильтра в примечании.
Ratio
хранить степень сжатия ( output/input * 100 ) в примечании. Это - неплатеж, если напечатать аргумент опущен.

таким образом Вы можете регистрировать это этот путь:

Accurate Logging

DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio

LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog logs/deflate_log deflate

см. также

top

DeflateMemLevel Directive

Description: сколько памяти должно использоваться zlib для сжатия
Syntax: DeflateMemLevel value
Default: DeflateMemLevel 9
Context: сервер config, действительный хозяин
Status: расширение
Module: mod_deflate

DeflateMemLevel директива определяет, сколько памяти должно использоваться zlib для сжатия (ценность между 1 и 9).

top

DeflateWindowSize Directive

Description: размер окна сжатия Zlib
Syntax: DeflateWindowSize value
Default: DeflateWindowSize 15
Context: сервер config, действительный хозяин
Status: расширение
Module: mod_deflate

DeflateWindowSize директива определяет zlib размер окна сжатия (ценность между 1 и 15). Вообще, чем выше размер окна, тем выше может степень сжатия ожидаться.