1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><!--
4
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
5
This file is generated from xml source: DO NOT EDIT
6
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
8
<title>mod_deflate - Apache HTTP Server</title>
9
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
10
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
11
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
12
<link href="../images/favicon.ico" rel="shortcut icon" /></head>
14
<div id="page-header">
15
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
16
<p class="apache">Apache HTTP Server Version 2.2</p>
17
<img alt="" src="../images/feather.gif" /></div>
18
<div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif" /></a></div>
20
<a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.2</a> > <a href="./">Modules</a></div>
21
<div id="page-content">
22
<div id="preamble"><h1>Apache Module mod_deflate</h1>
24
<p><span>Available Languages: </span><a href="../en/mod/mod_deflate.html" title="English"> en </a> |
25
<a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
26
<a href="../ko/mod/mod_deflate.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
28
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Compress content before it is delivered to the
30
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
31
<tr><th><a href="module-dict.html#ModuleIdentifier">Module�Identifier:</a></th><td>deflate_module</td></tr>
32
<tr><th><a href="module-dict.html#SourceFile">Source�File:</a></th><td>mod_deflate.c</td></tr></table>
35
<p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module provides
36
the <code>DEFLATE</code> output filter that allows output from
37
your server to be compressed before being sent to the client over
40
<div id="quickview"><h3 class="directives">Directives</h3>
42
<li><img alt="" src="../images/down.gif" /> <a href="#deflatebuffersize">DeflateBufferSize</a></li>
43
<li><img alt="" src="../images/down.gif" /> <a href="#deflatecompressionlevel">DeflateCompressionLevel</a></li>
44
<li><img alt="" src="../images/down.gif" /> <a href="#deflatefilternote">DeflateFilterNote</a></li>
45
<li><img alt="" src="../images/down.gif" /> <a href="#deflatememlevel">DeflateMemLevel</a></li>
46
<li><img alt="" src="../images/down.gif" /> <a href="#deflatewindowsize">DeflateWindowSize</a></li>
50
<li><img alt="" src="../images/down.gif" /> <a href="#recommended">Sample Configurations</a></li>
51
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Enabling Compression</a></li>
52
<li><img alt="" src="../images/down.gif" /> <a href="#proxies">Dealing with proxy servers</a></li>
53
</ul><h3>See also</h3>
55
<li><a href="../filter.html">Filters</a></li>
57
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
59
<h2><a name="recommended" id="recommended">Sample Configurations</a></h2>
60
<p>This is a simple sample configuration for the impatient.</p>
62
<div class="example"><h3>Compress only a few types</h3><p><code>
63
AddOutputFilterByType DEFLATE text/html text/plain text/xml
66
<p>The following configuration, while resulting in more compressed content,
67
is also much more complicated. Do not use this unless you fully understand
68
all the configuration details.</p>
70
<div class="example"><h3>Compress everything except images</h3><p><code>
71
<Location /><br />
74
SetOutputFilter DEFLATE<br />
76
# Netscape 4.x has some problems...<br />
77
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
79
# Netscape 4.06-4.08 have some more problems<br />
80
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
82
# MSIE masquerades as Netscape, but it is fine<br />
83
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html<br />
84
# Don't compress images<br />
85
SetEnvIfNoCase Request_URI \<br />
87
\.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
90
# Make sure proxies don't deliver the wrong content<br />
91
Header append Vary User-Agent env=!dont-vary<br />
96
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
98
<h2><a name="enable" id="enable">Enabling Compression</a></h2>
100
<h3><a name="output" id="output">Output Compression</a></h3>
101
<p>Compression is implemented by the <code>DEFLATE</code>
102
<a href="../filter.html">filter</a>. The following directive
103
will enable compression for documents in the container where it
106
<div class="example"><p><code>
107
SetOutputFilter DEFLATE
110
<p>Some popular browsers cannot handle compression of all content
111
so you may want to set the <code>gzip-only-text/html</code> note to
112
<code>1</code> to only allow html files to be compressed (see
113
below). If you set this to <em>anything but <code>1</code></em> it
116
<p>If you want to restrict the compression to particular MIME types
117
in general, you may use the <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code> directive. Here is an example of
118
enabling compression only for the html files of the Apache
121
<div class="example"><p><code>
122
<Directory "/your-server-root/manual"><br />
123
<span class="indent">
124
AddOutputFilterByType DEFLATE text/html<br />
129
<p>For browsers that have problems even with compression of all file
130
types, use the <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code> directive to set the <code>no-gzip</code>
131
note for that particular browser so that no compression will be
132
performed. You may combine <code>no-gzip</code> with <code>gzip-only-text/html</code> to get the best results. In that case
133
the former overrides the latter. Take a look at the following
134
excerpt from the <a href="#recommended">configuration example</a>
135
defined in the section above:</p>
137
<div class="example"><p><code>
138
BrowserMatch ^Mozilla/4 gzip-only-text/html<br />
139
BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
140
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
143
<p>At first we probe for a <code>User-Agent</code> string that
144
indicates a Netscape Navigator version of 4.x. These versions
145
cannot handle compression of types other than
146
<code>text/html</code>. The versions 4.06, 4.07 and 4.08 also
147
have problems with decompressing html files. Thus, we completely
148
turn off the deflate filter for them.</p>
150
<p>The third <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
151
directive fixes the guessed identity of the user agent, because
152
the Microsoft Internet Explorer identifies itself also as "Mozilla/4"
153
but is actually able to handle requested compression. Therefore we
154
match against the additional string "MSIE" (<code>\b</code> means
155
"word boundary") in the <code>User-Agent</code> Header and turn off
156
the restrictions defined before.</p>
158
<div class="note"><h3>Note</h3>
159
The <code>DEFLATE</code> filter is always inserted after RESOURCE
160
filters like PHP or SSI. It never touches internal subrequests.
162
<div class="note"><h3>Note</h3>
163
There is a environment variable <code>force-gzip</code>,
164
set via <code class="directive"><a href="../mod/core.html#setenv">SetEnv</a></code>, which
165
will ignore the accept-encoding setting of your browser and will
166
send compressed output.
170
<h3><a name="inflate" id="inflate">Output Decompression</a></h3>
171
<p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
172
inflating/uncompressing a gzip compressed response body. In order to activate
173
this feature you have to insert the <code>INFLATE</code> filter into
174
the outputfilter chain using <code class="directive"><a href="../mod/core.html#setoutputfilter">SetOutputFilter</a></code> or <code class="directive"><a href="../mod/mod_mime.html#addoutputfilter">AddOutputFilter</a></code>, for example:</p>
176
<div class="example"><p><code>
177
<Location /dav-area><br />
178
<span class="indent">
179
ProxyPass http://example.com/<br />
180
SetOutputFilter INFLATE<br />
185
<p>This Example will uncompress gzip'ed output from example.com, so other
186
filters can do further processing with it.
190
<h3><a name="input" id="input">Input Decompression</a></h3>
191
<p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
192
decompressing a gzip compressed request body . In order to activate
193
this feature you have to insert the <code>DEFLATE</code> filter into
194
the input filter chain using <code class="directive"><a href="../mod/core.html#setinputfilter">SetInputFilter</a></code> or <code class="directive"><a href="../mod/mod_mime.html#addinputfilter">AddInputFilter</a></code>, for example:</p>
196
<div class="example"><p><code>
197
<Location /dav-area><br />
198
<span class="indent">
199
SetInputFilter DEFLATE<br />
204
<p>Now if a request contains a <code>Content-Encoding:
205
gzip</code> header, the body will be automatically decompressed.
206
Few browsers have the ability to gzip request bodies. However,
207
some special applications actually do support request
208
compression, for instance some <a href="http://www.webdav.org">WebDAV</a> clients.</p>
210
<div class="warning"><h3>Note on Content-Length</h3>
211
<p>If you evaluate the request body yourself, <em>don't trust
212
the <code>Content-Length</code> header!</em>
213
The Content-Length header reflects the length of the
214
incoming data from the client and <em>not</em> the byte count of
215
the decompressed data stream.</p>
218
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
219
<div class="section">
220
<h2><a name="proxies" id="proxies">Dealing with proxy servers</a></h2>
222
<p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module sends a <code>Vary:
223
Accept-Encoding</code> HTTP response header to alert proxies that
224
a cached response should be sent only to clients that send the
225
appropriate <code>Accept-Encoding</code> request header. This
226
prevents compressed content from being sent to a client that will
227
not understand it.</p>
229
<p>If you use some special exclusions dependent
230
on, for example, the <code>User-Agent</code> header, you must
231
manually configure an addition to the <code>Vary</code> header
232
to alert proxies of the additional restrictions. For example,
233
in a typical configuration where the addition of the <code>DEFLATE</code>
234
filter depends on the <code>User-Agent</code>, you should add:</p>
236
<div class="example"><p><code>
237
Header append Vary User-Agent
240
<p>If your decision about compression depends on other information
241
than request headers (<em>e.g.</em> HTTP version), you have to set the
242
<code>Vary</code> header to the value <code>*</code>. This prevents
243
compliant proxies from caching entirely.</p>
245
<div class="example"><h3>Example</h3><p><code>
249
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
250
<div class="directive-section"><h2><a name="DeflateBufferSize" id="DeflateBufferSize">DeflateBufferSize</a> <a name="deflatebuffersize" id="deflatebuffersize">Directive</a></h2>
251
<table class="directive">
252
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fragment size to be compressed at one time by zlib</td></tr>
253
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateBufferSize <var>value</var></code></td></tr>
254
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateBufferSize 8096</code></td></tr>
255
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
256
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
257
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
259
<p>The <code class="directive">DeflateBufferSize</code> directive specifies
260
the size in bytes of the fragments that zlib should compress at one
264
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
265
<div class="directive-section"><h2><a name="DeflateCompressionLevel" id="DeflateCompressionLevel">DeflateCompressionLevel</a> <a name="deflatecompressionlevel" id="deflatecompressionlevel">Directive</a></h2>
266
<table class="directive">
267
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much compression do we apply to the output</td></tr>
268
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateCompressionLevel <var>value</var></code></td></tr>
269
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Zlib's default</code></td></tr>
270
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
271
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
272
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
273
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>This directive is available since Apache 2.0.45</td></tr>
275
<p>The <code class="directive">DeflateCompressionLevel</code> directive specifies
276
what level of compression should be used, the higher the value,
277
the better the compression, but the more CPU time is required to
279
<p>The value must between 1 (less compression) and 9 (more compression).</p>
282
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
283
<div class="directive-section"><h2><a name="DeflateFilterNote" id="DeflateFilterNote">DeflateFilterNote</a> <a name="deflatefilternote" id="deflatefilternote">Directive</a></h2>
284
<table class="directive">
285
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Places the compression ratio in a note for logging</td></tr>
286
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateFilterNote [<var>type</var>] <var>notename</var></code></td></tr>
287
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
288
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
289
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
290
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td><var>type</var> is available since Apache 2.0.45</td></tr>
292
<p>The <code class="directive">DeflateFilterNote</code> directive
293
specifies that a note about compression ratios should be attached
294
to the request. The name of the note is the value specified for
295
the directive. You can use that note for statistical purposes by
296
adding the value to your <a href="../logs.html#accesslog">access log</a>.</p>
298
<div class="example"><h3>Example</h3><p><code>
299
DeflateFilterNote ratio<br />
301
LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate<br />
302
CustomLog logs/deflate_log deflate
305
<p>If you want to extract more accurate values from your logs, you
306
can use the <var>type</var> argument to specify the type of data
307
left as note for logging. <var>type</var> can be one of:</p>
310
<dt><code>Input</code></dt>
311
<dd>Store the byte count of the filter's input stream in the note.</dd>
313
<dt><code>Output</code></dt>
314
<dd>Store the byte count of the filter's output stream in the note.</dd>
316
<dt><code>Ratio</code></dt>
317
<dd>Store the compression ratio (<code>output/input * 100</code>)
318
in the note. This is the default, if the <var>type</var> argument
322
<p>Thus you may log it this way:</p>
324
<div class="example"><h3>Accurate Logging</h3><p><code>
325
DeflateFilterNote Input instream<br />
326
DeflateFilterNote Output outstream<br />
327
DeflateFilterNote Ratio ratio<br />
329
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate<br />
330
CustomLog logs/deflate_log deflate
335
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
338
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
339
<div class="directive-section"><h2><a name="DeflateMemLevel" id="DeflateMemLevel">DeflateMemLevel</a> <a name="deflatememlevel" id="deflatememlevel">Directive</a></h2>
340
<table class="directive">
341
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much memory should be used by zlib for compression</td></tr>
342
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateMemLevel <var>value</var></code></td></tr>
343
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateMemLevel 9</code></td></tr>
344
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
345
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
346
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
348
<p>The <code class="directive">DeflateMemLevel</code> directive specifies
349
how much memory should be used by zlib for compression
350
(a value between 1 and 9).</p>
353
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
354
<div class="directive-section"><h2><a name="DeflateWindowSize" id="DeflateWindowSize">DeflateWindowSize</a> <a name="deflatewindowsize" id="deflatewindowsize">Directive</a></h2>
355
<table class="directive">
356
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Zlib compression window size</td></tr>
357
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateWindowSize <var>value</var></code></td></tr>
358
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateWindowSize 15</code></td></tr>
359
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
360
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
361
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
363
<p>The <code class="directive">DeflateWindowSize</code> directive specifies the
364
zlib compression window size (a value between 1 and 15). Generally, the
365
higher the window size, the higher can the compression ratio be expected.</p>
369
<div class="bottomlang">
370
<p><span>Available Languages: </span><a href="../en/mod/mod_deflate.html" title="English"> en </a> |
371
<a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> |
372
<a href="../ko/mod/mod_deflate.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p>
373
</div><div id="footer">
374
<p class="apache">Copyright 2006 The Apache Software Foundation.<br />Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>
375
<p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.html">Directives</a> | <a href="../faq/">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div>
b'\\ No newline at end of file'