- Overview
- Installation & Uninstallation
- Local and remote management using IIS 7
- Context and processing order
- Apache compatibility
- Modules
- core functions
- mod_antibot
- mod_asis
- mod_auth_basic
- mod_auth_digest
- mod_authn_anon
- mod_authn_dbd
- mod_authn_default
- mod_authn_file
- mod_authz_default
- mod_authz_groupfile
- mod_authz_host
- mod_authz_user
- mod_cache
- mod_dbd
- mod_deflate
- mod_developer
- mod_dir
- mod_disk_cache
- mod_env
- mod_evasive
- mod_expires
- mod_filter
- mod_gzip
- mod_headers
- mod_hotlink
- mod_linkfreeze
- mod_log_config
- mod_logio
- mod_mem_cache
- mod_mime
- mod_proxy
- mod_replace
- mod_rewrite
- mod_seo
- mod_setenvif
- mod_so
- mod_speling
- mod_usertrack
- mod_xsendfile
- Articles
- Release history
- Troubleshooting
- License agreement
mod_deflate
Overview
mod_deflate module applies DEFLATE filter that allows server output to be compressed before sending it to the client over the network.
Quick start
Compress only specific 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
# 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>
Enabling Compression
Output Compression
Compression is enabled by
DEFLATE
filter as follows:
SetOutputFilter DEFLATE
Some browsers do not support compression of all content types,
so you may need to set
gzip-only-text/html
to 1 to only
allow compression of html files. If you put other value than 1, it will be ignored.
If you want to restrict the compression to particular MIME types,
you may use
AddOutputFilterByType
directive:
<Directory "/your-server-root/manual">
AddOutputFilterByType DEFLATE text/html
</Directory>
Output Decompression
mod_deflate module also provides a filter for inflating/uncompressing a gzip compressed response body. In order to activate this feature you have to insert the INFLATE filter into the output filter chain using SetOutputFilter or AddOutputFilter:
<Location /dav-area>
ProxyPass http://example.com/
SetOutputFilter INFLATE
</Location>
This code will uncompress gzip'ed output from example.com, so other filters can do further processing with it.
Input Decompression
mod_deflate
module also provides a
filter for decompressing a gzip compressed request body.
In order to activate this feature you have to insert the DEFLATE filter into the input
filter chain using SetOutputFilter or AddOutputFilter:
<Location /dav-area>
SetInputFilter DEFLATE
</Location>
Now if a request contains a Content-Encoding: gzip header, the body will be automatically decompressed. Few browsers have the ability to gzip request bodies. However, some special applications do support request compression, for instance some WebDAV clients.
Dealing with proxy servers
mod_deflate
module sends a
Vary: Accept-Encoding
HTTP response header to alert proxies that a cached
response should be sent only to clients that send
the appropriate
Accept-Encoding
request header.
If you use some special exclusions dependent on, for example, the User-Agent header,
you must manually configure an addition to the
Vary
header
to alert proxies of the additional restrictions.
For example, in a typical configuration where the addition of the DEFLATE filter
depends on the User-Agent, you should add:
Header append Vary User-Agent
If your decision about compression depends on other information than request headers
(e.g. HTTP version), you have to set the
Vary
header to the value '*'.
This prevents compliant proxies from caching entirely:
Header set Vary *
Related articles and topics
- Introduction to mod_gzip
- Guide: How to enable mod_gzip compression for IIS7
- mod_env
- mod_setenvif
- mod_gzip
Directives
Name | Context | Description |
---|---|---|
DeflateCompressionLevel | S V D .h | defines to what extent the content must be compressed |
DeflateCompressionLevel
DeflateCompressionLevel
directive sets the level of compression to be applied to the content.
Higher value means better compression.
Compression level value must be between 1 (minimum compression) and 9 (maximum compression).
Syntax
DeflateCompressionLevel value
Default
DeflateCompressionLevel 6