]> granicus.if.org Git - apache/blob - docs/manual/mod/mod_deflate.html.en
Simplifies the rewrite block for serving pre-compressed content.
[apache] / docs / manual / mod / mod_deflate.html.en
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 <meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
5 <!--
6         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
7               This file is generated from xml source: DO NOT EDIT
8         XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
9       -->
10 <title>mod_deflate - Apache HTTP Server Version 2.5</title>
11 <link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
12 <link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
13 <link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" /><link rel="stylesheet" type="text/css" href="../style/css/prettify.css" />
14 <script src="../style/scripts/prettify.min.js" type="text/javascript">
15 </script>
16
17 <link href="../images/favicon.ico" rel="shortcut icon" /></head>
18 <body>
19 <div id="page-header">
20 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p>
21 <p class="apache">Apache HTTP Server Version 2.5</p>
22 <img alt="" src="../images/feather.png" /></div>
23 <div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
24 <div id="path">
25 <a href="http://www.apache.org/">Apache</a> &gt; <a href="http://httpd.apache.org/">HTTP Server</a> &gt; <a href="http://httpd.apache.org/docs/">Documentation</a> &gt; <a href="../">Version 2.5</a> &gt; <a href="./">Modules</a></div>
26 <div id="page-content">
27 <div id="preamble"><h1>Apache Module mod_deflate</h1>
28 <div class="toplang">
29 <p><span>Available Languages: </span><a href="../en/mod/mod_deflate.html" title="English">&nbsp;en&nbsp;</a> |
30 <a href="../fr/mod/mod_deflate.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
31 <a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
32 <a href="../ko/mod/mod_deflate.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
33 </div>
34 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Compress content before it is delivered to the
35 client</td></tr>
36 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
37 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>deflate_module</td></tr>
38 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_deflate.c</td></tr></table>
39 <h3>Summary</h3>
40
41     <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module provides
42     the <code>DEFLATE</code> output filter that allows output from
43     your server to be compressed before being sent to the client over
44     the network.</p>
45 </div>
46 <div id="quickview"><h3>Topics</h3>
47 <ul id="topics">
48 <li><img alt="" src="../images/down.gif" /> <a href="#supportedencodings">Supported Encodings</a></li>
49 <li><img alt="" src="../images/down.gif" /> <a href="#recommended">Sample Configurations</a></li>
50 <li><img alt="" src="../images/down.gif" /> <a href="#enable">Enabling Compression</a></li>
51 <li><img alt="" src="../images/down.gif" /> <a href="#proxies">Dealing with proxy servers</a></li>
52 <li><img alt="" src="../images/down.gif" /> <a href="#precompressed">Serving pre-compressed
53 content</a></li>
54 </ul><h3 class="directives">Directives</h3>
55 <ul id="toc">
56 <li><img alt="" src="../images/down.gif" /> <a href="#deflatealteretag">DeflateAlterETag</a></li>
57 <li><img alt="" src="../images/down.gif" /> <a href="#deflatebuffersize">DeflateBufferSize</a></li>
58 <li><img alt="" src="../images/down.gif" /> <a href="#deflatecompressionlevel">DeflateCompressionLevel</a></li>
59 <li><img alt="" src="../images/down.gif" /> <a href="#deflatefilternote">DeflateFilterNote</a></li>
60 <li><img alt="" src="../images/down.gif" /> <a href="#deflateinflatelimitrequestbody">DeflateInflateLimitRequestBody</a></li>
61 <li><img alt="" src="../images/down.gif" /> <a href="#deflateinflateratioburst">DeflateInflateRatioBurst</a></li>
62 <li><img alt="" src="../images/down.gif" /> <a href="#deflateinflateratiolimit">DeflateInflateRatioLimit</a></li>
63 <li><img alt="" src="../images/down.gif" /> <a href="#deflatememlevel">DeflateMemLevel</a></li>
64 <li><img alt="" src="../images/down.gif" /> <a href="#deflatewindowsize">DeflateWindowSize</a></li>
65 </ul>
66 <h3>Bugfix checklist</h3><ul class="seealso"><li><a href="https://www.apache.org/dist/httpd/CHANGES_2.4">httpd changelog</a></li><li><a href="https://bz.apache.org/bugzilla/buglist.cgi?bug_status=__open__&amp;list_id=144532&amp;product=Apache%20httpd-2&amp;query_format=specific&amp;order=changeddate%20DESC%2Cpriority%2Cbug_severity&amp;component=mod_deflate">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&amp;component=mod_deflate">Report a bug</a></li></ul><h3>See also</h3>
67 <ul class="seealso">
68 <li><a href="../filter.html">Filters</a></li>
69 <li><a href="#comments_section">Comments</a></li></ul></div>
70 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
71 <div class="section">
72 <h2><a name="supportedencodings" id="supportedencodings">Supported Encodings</a></h2>
73   <p>The <code>gzip</code> encoding is the only one supported to ensure complete compatibility
74   with old browser implementations. The <code>deflate</code> encoding is not supported, 
75   please check the <a href="http://www.gzip.org/zlib/zlib_faq.html#faq38">zlib's documentation</a>
76   for a complete explanation.
77   </p>
78 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
79 <div class="section">
80 <h2><a name="recommended" id="recommended">Sample Configurations</a></h2>
81     <div class="warning"><h3>Compression and TLS</h3>
82         <p>Some web applications are vulnerable to an information disclosure
83         attack when a TLS connection carries deflate compressed data. For more
84         information, review the details of the "BREACH" family of attacks.</p>
85     </div>
86     <p>This is a simple configuration that compresses common text-based content types.</p>
87
88     <div class="example"><h3>Compress only a few types</h3><pre class="prettyprint lang-config">AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript</pre>
89 </div>
90
91 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
92 <div class="section">
93 <h2><a name="enable" id="enable">Enabling Compression</a></h2>
94     <div class="warning"><h3>Compression and TLS</h3>
95         <p>Some web applications are vulnerable to an information disclosure
96         attack when a TLS connection carries deflate compressed data. For more
97         information, review the details of the "BREACH" family of attacks.</p>
98     </div>
99
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
104       is placed:</p>
105
106       <pre class="prettyprint lang-config">SetOutputFilter DEFLATE
107 SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip</pre>
108
109
110       <p>If you want to restrict the compression to particular MIME types
111       in general, you may use the <code class="directive"><a href="../mod/mod_filter.html#addoutputfilterbytype">AddOutputFilterByType</a></code> directive. Here is an example of
112       enabling compression only for the html files of the Apache
113       documentation:</p>
114
115       <pre class="prettyprint lang-config">&lt;Directory "/your-server-root/manual"&gt;
116     AddOutputFilterByType DEFLATE text/html
117 &lt;/Directory&gt;</pre>
118
119
120       <div class="note"><h3>Note</h3>
121         The <code>DEFLATE</code> filter is always inserted after RESOURCE
122         filters like PHP or SSI. It never touches internal subrequests.
123       </div>
124       <div class="note"><h3>Note</h3>
125         There is an environment variable <code>force-gzip</code>,
126         set via <code class="directive"><a href="../mod/mod_env.html#setenv">SetEnv</a></code>, which
127         will ignore the accept-encoding setting of your browser and will
128         send compressed output.
129       </div>
130
131     
132     <h3><a name="inflate" id="inflate">Output Decompression</a></h3>
133       <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
134       inflating/uncompressing a gzip compressed response body. In order to activate
135       this feature you have to insert the <code>INFLATE</code> filter into
136       the output filter 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>
137
138       <pre class="prettyprint lang-config">&lt;Location "/dav-area"&gt;
139     ProxyPass "http://example.com/"
140     SetOutputFilter INFLATE
141 &lt;/Location&gt;</pre>
142
143
144       <p>This Example will uncompress gzip'ed output from example.com, so other
145       filters can do further processing with it.
146       </p>
147
148     
149     <h3><a name="input" id="input">Input Decompression</a></h3>
150       <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
151       decompressing a gzip compressed request body . In order to activate
152       this feature you have to insert the <code>DEFLATE</code> filter into
153       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>
154
155       <pre class="prettyprint lang-config">&lt;Location "/dav-area"&gt;
156     SetInputFilter DEFLATE
157 &lt;/Location&gt;</pre>
158
159
160       <p>Now if a request contains a <code>Content-Encoding:
161       gzip</code> header, the body will be automatically decompressed.
162       Few browsers have the ability to gzip request bodies. However,
163       some special applications actually do support request
164       compression, for instance some <a href="http://www.webdav.org">WebDAV</a> clients.</p>
165
166       <div class="warning"><h3>Note on Content-Length</h3>
167         <p>If you evaluate the request body yourself, <em>don't trust
168         the <code>Content-Length</code> header!</em>
169         The Content-Length header reflects the length of the
170         incoming data from the client and <em>not</em> the byte count of
171         the decompressed data stream.</p>
172       </div>
173     
174 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
175 <div class="section">
176 <h2><a name="proxies" id="proxies">Dealing with proxy servers</a></h2>
177
178     <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module sends a <code>Vary:
179     Accept-Encoding</code> HTTP response header to alert proxies that
180     a cached response should be sent only to clients that send the
181     appropriate <code>Accept-Encoding</code> request header.  This
182     prevents compressed content from being sent to a client that will
183     not understand it.</p>
184
185     <p>If you use some special exclusions dependent
186     on, for example, the <code>User-Agent</code> header, you must
187     manually configure an addition to the <code>Vary</code> header
188     to alert proxies of the additional restrictions.  For example,
189     in a typical configuration where the addition of the <code>DEFLATE</code>
190     filter depends on the <code>User-Agent</code>, you should add:</p>
191
192     <pre class="prettyprint lang-config">Header append Vary User-Agent</pre>
193
194
195     <p>If your decision about compression depends on other information
196     than request headers (<em>e.g.</em> HTTP version), you have to set the
197     <code>Vary</code> header to the value <code>*</code>. This prevents
198     compliant proxies from caching entirely.</p>
199
200     <div class="example"><h3>Example</h3><pre class="prettyprint lang-config">Header set Vary *</pre>
201 </div>
202 </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
203 <div class="section">
204 <h2><a name="precompressed" id="precompressed">Serving pre-compressed
205 content</a></h2>
206
207     <p>Since <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> re-compresses content each
208     time a request is made, some performance benefit can be derived by
209     pre-compressing the content and telling mod_deflate to serve them
210     without re-compressing them. This may be accomplished using a
211     configuration like the following:</p>
212
213     <pre class="prettyprint lang-config">&lt;IfModule mod_headers.c&gt;
214     # Serve gzip compressed CSS and JS files if they exist
215     # and the client accepts gzip.
216     RewriteCond "%{HTTP:Accept-encoding}" "gzip"
217     RewriteCond "%{REQUEST_FILENAME}\.gz" "-s"
218     RewriteRule "^(.*)\.(css|js)"         "$1\.$2\.gz" [QSA]
219
220     # Serve correct content types, and prevent mod_deflate double gzip.
221     RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
222     RewriteRule "\.js\.gz$"  "-" [T=text/javascript,E=no-gzip:1]
223
224
225     &lt;FilesMatch "(\.js\.gz|\.css\.gz)$"&gt;
226       # Serve correct encoding type.
227       Header append Content-Encoding gzip
228
229       # Force proxies to cache gzipped &amp;
230       # non-gzipped css/js files separately.
231       Header append Vary Accept-Encoding
232     &lt;/FilesMatch&gt;
233 &lt;/IfModule&gt;</pre>
234
235
236 </div>
237 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
238 <div class="directive-section"><h2><a name="DeflateAlterETag" id="DeflateAlterETag">DeflateAlterETag</a> <a name="deflatealteretag" id="deflatealteretag">Directive</a></h2>
239 <table class="directive">
240 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How the outgoing ETag header should be modified during compression</td></tr>
241 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateAlterETag AddSuffix|NoChange|Remove</code></td></tr>
242 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateAlterETag AddSuffix</code></td></tr>
243 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
244 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
245 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
246 </table>
247     <p>The <code class="directive">DeflateAlterETag</code> directive specifies
248     how the ETag hader should be altered when a response is compressed.</p>
249     <dl>
250     <dt>AddSuffix</dt>
251     <dd><p>Append the compression method onto the end of the ETag, causing
252         compressed and uncompressed representations to have unique ETags.
253         This has been the default since 2.4.0, but prevents serving
254         "HTTP Not Modified" (304) responses to conditional requests for
255         compressed content.</p></dd>
256     <dt>NoChange</dt>
257     <dd><p>Don't change the ETag on a compressed response. This was the default
258         prior to 2.4.0, but does not satisfy the HTTP/1.1 property that all
259         representations of the same resource have unique ETags. </p></dd>
260     <dt>Remove</dt>
261     <dd><p>Remove the ETag header from compressed responses. This prevents
262         some conditional requests from being possible, but avoids the
263         shortcomings of the preceding options.  </p></dd>
264     </dl>
265
266 </div>
267 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
268 <div class="directive-section"><h2><a name="DeflateBufferSize" id="DeflateBufferSize">DeflateBufferSize</a> <a name="deflatebuffersize" id="deflatebuffersize">Directive</a></h2>
269 <table class="directive">
270 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fragment size to be compressed at one time by zlib</td></tr>
271 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateBufferSize <var>value</var></code></td></tr>
272 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateBufferSize 8096</code></td></tr>
273 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
274 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
275 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
276 </table>
277     <p>The <code class="directive">DeflateBufferSize</code> directive specifies
278     the size in bytes of the fragments that zlib should compress at one
279     time. If the compressed response size is bigger than the one specified
280     by this directive then httpd will switch to chunked encoding 
281     (HTTP header <code>Transfer-Encoding</code> set to <code>Chunked</code>), with the
282     side effect of not setting any <code>Content-Length</code> HTTP header. This is particularly 
283     important when httpd works behind reverse caching proxies or when httpd is configured with 
284     <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> and <code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code> because
285     HTTP responses without any <code>Content-Length</code> header might not be cached.
286   </p>
287
288 </div>
289 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
290 <div class="directive-section"><h2><a name="DeflateCompressionLevel" id="DeflateCompressionLevel">DeflateCompressionLevel</a> <a name="deflatecompressionlevel" id="deflatecompressionlevel">Directive</a></h2>
291 <table class="directive">
292 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much compression do we apply to the output</td></tr>
293 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateCompressionLevel <var>value</var></code></td></tr>
294 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Zlib's default</code></td></tr>
295 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
296 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
297 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
298 </table>
299     <p>The <code class="directive">DeflateCompressionLevel</code> directive specifies
300         what level of compression should be used, the higher the value,
301         the better the compression, but the more CPU time is required to
302         achieve this.</p>
303     <p>The value must between 1 (less compression) and 9 (more compression).</p>
304
305 </div>
306 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
307 <div class="directive-section"><h2><a name="DeflateFilterNote" id="DeflateFilterNote">DeflateFilterNote</a> <a name="deflatefilternote" id="deflatefilternote">Directive</a></h2>
308 <table class="directive">
309 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Places the compression ratio in a note for logging</td></tr>
310 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateFilterNote [<var>type</var>] <var>notename</var></code></td></tr>
311 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
312 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
313 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
314 </table>
315     <p>The <code class="directive">DeflateFilterNote</code> directive
316     specifies that a note about compression ratios should be attached
317     to the request. The name of the note is the value specified for
318     the directive. You can use that note for statistical purposes by
319     adding the value to your <a href="../logs.html#accesslog">access log</a>.</p>
320
321     <div class="example"><h3>Example</h3><pre class="prettyprint lang-config">      DeflateFilterNote ratio
322
323       LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate
324       CustomLog "logs/deflate_log" deflate</pre>
325 </div>
326
327     <p>If you want to extract more accurate values from your logs, you
328     can use the <var>type</var> argument to specify the type of data
329     left as a note for logging. <var>type</var> can be one of:</p>
330
331     <dl>
332       <dt><code>Input</code></dt>
333       <dd>Store the byte count of the filter's input stream in the note.</dd>
334
335       <dt><code>Output</code></dt>
336       <dd>Store the byte count of the filter's output stream in the note.</dd>
337
338       <dt><code>Ratio</code></dt>
339       <dd>Store the compression ratio (<code>output/input * 100</code>)
340       in the note. This is the default, if the <var>type</var> argument
341       is omitted.</dd>
342     </dl>
343
344     <p>Thus you may log it this way:</p>
345
346     <div class="example"><h3>Accurate Logging</h3><pre class="prettyprint lang-config">DeflateFilterNote Input instream
347 DeflateFilterNote Output outstream
348 DeflateFilterNote Ratio ratio
349
350 LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
351 CustomLog "logs/deflate_log" deflate</pre>
352 </div>
353
354 <h3>See also</h3>
355 <ul>
356 <li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
357 </ul>
358 </div>
359 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
360 <div class="directive-section"><h2><a name="DeflateInflateLimitRequestBody" id="DeflateInflateLimitRequestBody">DeflateInflateLimitRequestBody</a> <a name="deflateinflatelimitrequestbody" id="deflateinflatelimitrequestbody">Directive</a></h2>
361 <table class="directive">
362 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum size of inflated request bodies</td></tr>
363 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateInflateLimitRequestBody<var>value</var></code></td></tr>
364 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>None, but LimitRequestBody applies after deflation</code></td></tr>
365 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
366 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
367 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
368 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
369 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>2.4.10 and later</td></tr>
370 </table>
371     <p>The <code class="directive">DeflateInflateLimitRequestBody</code> directive
372         specifies the maximum size of an inflated request body. If it is unset,
373         <code class="directive"><a href="../mod/core.html#limitrequestbody">LimitRequestBody</a></code> is applied to the
374         inflated body.</p>
375
376 </div>
377 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
378 <div class="directive-section"><h2><a name="DeflateInflateRatioBurst" id="DeflateInflateRatioBurst">DeflateInflateRatioBurst</a> <a name="deflateinflateratioburst" id="deflateinflateratioburst">Directive</a></h2>
379 <table class="directive">
380 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum number of times the inflation ratio for request bodies
381              can be crossed</td></tr>
382 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateInflateRatioBurst <var>value</var></code></td></tr>
383 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>3</code></td></tr>
384 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
385 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
386 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
387 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
388 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>2.4.10 and later</td></tr>
389 </table>
390     <p>The <code class="directive">DeflateInflateRatioBurst</code> directive
391        specifies the maximum number of times the
392        <code class="directive">DeflateInflateRatioLimit</code> can be crossed before
393        terminating the request.</p>
394
395 </div>
396 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
397 <div class="directive-section"><h2><a name="DeflateInflateRatioLimit" id="DeflateInflateRatioLimit">DeflateInflateRatioLimit</a> <a name="deflateinflateratiolimit" id="deflateinflateratiolimit">Directive</a></h2>
398 <table class="directive">
399 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Maximum inflation ratio for request bodies</td></tr>
400 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateInflateRatioLimit <var>value</var></code></td></tr>
401 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>200</code></td></tr>
402 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</td></tr>
403 <tr><th><a href="directive-dict.html#Override">Override:</a></th><td>All</td></tr>
404 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
405 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
406 <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>2.4.10 and later</td></tr>
407 </table>
408     <p>The <code class="directive">DeflateInflateRatioLimit</code> directive
409         specifies the maximum ratio of deflated to inflated size of an
410         inflated request body. This ratio is checked as the body is
411         streamed in, and if crossed more than
412         <code class="directive">DeflateInflateRatioBurst</code> times, the request
413         will be terminated.</p>
414
415 </div>
416 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
417 <div class="directive-section"><h2><a name="DeflateMemLevel" id="DeflateMemLevel">DeflateMemLevel</a> <a name="deflatememlevel" id="deflatememlevel">Directive</a></h2>
418 <table class="directive">
419 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much memory should be used by zlib for compression</td></tr>
420 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateMemLevel <var>value</var></code></td></tr>
421 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateMemLevel 9</code></td></tr>
422 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
423 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
424 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
425 </table>
426     <p>The <code class="directive">DeflateMemLevel</code> directive specifies
427     how much memory should be used by zlib for compression
428     (a value between 1 and 9).</p>
429
430 </div>
431 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
432 <div class="directive-section"><h2><a name="DeflateWindowSize" id="DeflateWindowSize">DeflateWindowSize</a> <a name="deflatewindowsize" id="deflatewindowsize">Directive</a></h2>
433 <table class="directive">
434 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Zlib compression window size</td></tr>
435 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateWindowSize <var>value</var></code></td></tr>
436 <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateWindowSize 15</code></td></tr>
437 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
438 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
439 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
440 </table>
441     <p>The <code class="directive">DeflateWindowSize</code> directive specifies the
442     zlib compression window size (a value between 1 and 15). Generally, the
443     higher the window size, the higher can the compression ratio be expected.</p>
444
445 </div>
446 </div>
447 <div class="bottomlang">
448 <p><span>Available Languages: </span><a href="../en/mod/mod_deflate.html" title="English">&nbsp;en&nbsp;</a> |
449 <a href="../fr/mod/mod_deflate.html" hreflang="fr" rel="alternate" title="Français">&nbsp;fr&nbsp;</a> |
450 <a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
451 <a href="../ko/mod/mod_deflate.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
452 </div><div class="top"><a href="#page-header"><img src="../images/up.gif" alt="top" /></a></div><div class="section"><h2><a id="comments_section" name="comments_section">Comments</a></h2><div class="warning"><strong>Notice:</strong><br />This is not a Q&amp;A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed again by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Freenode, or sent to our <a href="http://httpd.apache.org/lists.html">mailing lists</a>.</div>
453 <script type="text/javascript"><!--//--><![CDATA[//><!--
454 var comments_shortname = 'httpd';
455 var comments_identifier = 'http://httpd.apache.org/docs/trunk/mod/mod_deflate.html';
456 (function(w, d) {
457     if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
458         d.write('<div id="comments_thread"><\/div>');
459         var s = d.createElement('script');
460         s.type = 'text/javascript';
461         s.async = true;
462         s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
463         (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
464     }
465     else {
466         d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
467     }
468 })(window, document);
469 //--><!]]></script></div><div id="footer">
470 <p class="apache">Copyright 2017 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>
471 <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="http://wiki.apache.org/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a></p></div><script type="text/javascript"><!--//--><![CDATA[//><!--
472 if (typeof(prettyPrint) !== 'undefined') {
473     prettyPrint();
474 }
475 //--><!]]></script>
476 </body></html>