<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type" />
<meta content="noindex, nofollow" name="robots" />
<!--
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
              This file is generated from xml source: DO NOT EDIT
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
      -->
<title>mod_deflate - Apache HTTP Server</title>
<link href="../style/css/manual.css" rel="stylesheet" media="all" type="text/css" title="Main stylesheet" />
<link href="../style/css/manual-loose-100pc.css" rel="alternate stylesheet" media="all" type="text/css" title="No Sidebar - Default font size" />
<link href="../style/css/manual-print.css" rel="stylesheet" media="print" type="text/css" />
<link href="../images/favicon.ico" rel="shortcut icon" /><link href="http://httpd.apache.org/docs/current/mod/mod_deflate.html" rel="canonical" /></head>
<body>
<div id="page-header">
<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>
<p class="apache">Apache HTTP Server Version 2.0</p>
<img alt="" src="../images/feather.gif" /></div>
<div class="up"><a href="./"><img title="&lt;-" alt="&lt;-" src="../images/left.gif" /></a></div>
<div id="path">
<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.0</a> &gt; <a href="./">Modules</a></div>
<div id="page-content">
<div class="retired"><h4>Please note</h4>
            <p>This document refers to the <strong>2.0</strong> version of Apache httpd, which <strong>is no longer maintained</strong>. Upgrade, and refer to the current version of httpd instead, documented at:</p>
        <ul><li><a href="http://httpd.apache.org/docs/current/">Current release version of Apache HTTP Server documentation</a></li></ul><p>You may follow <a href="http://httpd.apache.org/docs/current/mod/mod_deflate.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_deflate</h1>
<div class="toplang">
<p><span>Available Languages: </span><a href="../en/mod/mod_deflate.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_deflate.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div>
<table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Compress content before it is delivered to the
client</td></tr>
<tr><th><a href="module-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="module-dict.html#ModuleIdentifier">Module&#160;Identifier:</a></th><td>deflate_module</td></tr>
<tr><th><a href="module-dict.html#SourceFile">Source&#160;File:</a></th><td>mod_deflate.c</td></tr></table>
<h3>Summary</h3>

    <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module provides
    the <code>DEFLATE</code> output filter that allows output from
    your server to be compressed before being sent to the client over
    the network.</p>
</div>
<div id="quickview"><h3 class="directives">Directives</h3>
<ul id="toc">
<li><img alt="" src="../images/down.gif" /> <a href="#deflatebuffersize">DeflateBufferSize</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatecompressionlevel">DeflateCompressionLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatefilternote">DeflateFilterNote</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatememlevel">DeflateMemLevel</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#deflatewindowsize">DeflateWindowSize</a></li>
</ul>
<h3>Topics</h3>
<ul id="topics">
<li><img alt="" src="../images/down.gif" /> <a href="#recommended">Sample Configurations</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#enable">Enabling Compression</a></li>
<li><img alt="" src="../images/down.gif" /> <a href="#proxies">Dealing with proxy servers</a></li>
</ul><h3>See also</h3>
<ul class="seealso">
<li><a href="../filter.html">Filters</a></li>
</ul></div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="recommended" id="recommended">Sample Configurations</a></h2>
    <p>This is a simple sample configuration for the impatient.</p>

    <div class="example"><h3>Compress only a few types</h3><p><code>
      AddOutputFilterByType DEFLATE text/html text/plain text/xml
    </code></p></div>

    <p>The following configuration, while resulting in more compressed content,
    is also much more complicated.  Do not use this unless you fully understand
    all the configuration details.</p>

    <div class="example"><h3>Compress everything except images</h3><p><code>
      &lt;Location /&gt;<br />
      <span class="indent">
        # Insert filter<br />
        SetOutputFilter DEFLATE<br />
        <br />
        # Netscape 4.x has some problems...<br />
        BrowserMatch ^Mozilla/4         gzip-only-text/html<br />
        <br />
        # Netscape 4.06-4.08 have some more problems<br />
        BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
        <br />
        # MSIE masquerades as Netscape, but it is fine<br />
        # BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html<br />
        <br />
        # NOTE: Due to a bug in mod_setenvif up to Apache 2.0.48<br />
        # the above regex won't work. You can use the following<br />
        # workaround to get the desired effect:<br />
        BrowserMatch \bMSI[E]           !no-gzip !gzip-only-text/html<br />
        <br />
        # Don't compress images<br />
        SetEnvIfNoCase Request_URI \<br />
        <span class="indent">
          \.(?:gif|jpe?g|png)$ no-gzip dont-vary<br />
        </span>
        <br />
        # Make sure proxies don't deliver the wrong content<br />
        Header append Vary User-Agent env=!dont-vary<br />
      </span>
      &lt;/Location&gt;
    </code></p></div>

</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="enable" id="enable">Enabling Compression</a></h2>

    <h3><a name="output" id="output">Output Compression</a></h3>
      <p>Compression is implemented by the <code>DEFLATE</code>
      <a href="../filter.html">filter</a>. The following directive
      will enable compression for documents in the container where it
      is placed:</p>

      <div class="example"><p><code>
        SetOutputFilter DEFLATE
      </code></p></div>

      <p>Some popular browsers cannot handle compression of all content
      so you may want to set the <code>gzip-only-text/html</code> note to
      <code>1</code> to only allow html files to be compressed (see
      below). If you set this to <em>anything but <code>1</code></em> it
      will be ignored.</p>
      
      <p>If you want to restrict the compression to particular MIME types
      in general, you may use the <code class="directive"><a href="../mod/core.html#addoutputfilterbytype">AddOutputFilterByType</a></code> directive. Here is an example of
      enabling compression only for the html files of the Apache
      documentation:</p>

      <div class="example"><p><code>
        &lt;Directory "/your-server-root/manual"&gt;<br />
        <span class="indent">
          AddOutputFilterByType DEFLATE text/html<br />
        </span>
        &lt;/Directory&gt;
      </code></p></div>

      <p>For browsers that have problems even with compression of all file
      types, use the <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code> directive to set the <code>no-gzip</code>
      note for that particular browser so that no compression will be
      performed. You may combine <code>no-gzip</code> with <code>gzip-only-text/html</code> to get the best results. In that case
      the former overrides the latter. Take a look at the following
      excerpt from the <a href="#recommended">configuration example</a>
      defined in the section above:</p>

      <div class="example"><p><code>
        BrowserMatch ^Mozilla/4         gzip-only-text/html<br />
        BrowserMatch ^Mozilla/4\.0[678] no-gzip<br />
        BrowserMatch \bMSIE             !no-gzip !gzip-only-text/html
      </code></p></div>

      <p>At first we probe for a <code>User-Agent</code> string that
      indicates a Netscape Navigator version of 4.x. These versions
      cannot handle compression of types other than
      <code>text/html</code>. The versions 4.06, 4.07 and 4.08 also
      have problems with decompressing html files. Thus, we completely
      turn off the deflate filter for them.</p>

      <p>The third <code class="directive"><a href="../mod/mod_setenvif.html#browsermatch">BrowserMatch</a></code>
      directive fixes the guessed identity of the user agent, because
      the Microsoft Internet Explorer identifies itself also as "Mozilla/4"
      but is actually able to handle requested compression. Therefore we
      match against the additional string "MSIE" (<code>\b</code> means
      "word boundary") in the <code>User-Agent</code> Header and turn off
      the restrictions defined before.</p>

      <div class="note"><h3>Note</h3>
        The <code>DEFLATE</code> filter is always inserted after RESOURCE
        filters like PHP or SSI. It never touches internal subrequests.
      </div>
    

    <h3><a name="input" id="input">Input Decompression</a></h3>
      <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module also provides a filter for
      decompressing a gzip compressed request body . In order to activate
      this feature you have to insert the <code>DEFLATE</code> filter into
      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>

      <div class="example"><p><code>
        &lt;Location /dav-area&gt;<br />
        <span class="indent">
          SetInputFilter DEFLATE<br />
        </span>
        &lt;/Location&gt;
      </code></p></div>
      
      <p>Now if a request contains a <code>Content-Encoding:
      gzip</code> header, the body will be automatically decompressed.
      Few browsers have the ability to gzip request bodies. However,
      some special applications actually do support request
      compression, for instance some <a href="http://www.webdav.org">WebDAV</a> clients.</p>

      <div class="warning"><h3>Note on Content-Length</h3>
        <p>If you evaluate the request body yourself, <em>don't trust
        the <code>Content-Length</code> header!</em>
        The Content-Length header reflects the length of the
        incoming data from the client and <em>not</em> the byte count of
        the decompressed data stream.</p>
      </div>
    
</div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="section">
<h2><a name="proxies" id="proxies">Dealing with proxy servers</a></h2>

    <p>The <code class="module"><a href="../mod/mod_deflate.html">mod_deflate</a></code> module sends a <code>Vary:
    Accept-Encoding</code> HTTP response header to alert proxies that
    a cached response should be sent only to clients that send the
    appropriate <code>Accept-Encoding</code> request header.  This
    prevents compressed content from being sent to a client that will
    not understand it.</p>

    <p>If you use some special exclusions dependent
    on, for example, the <code>User-Agent</code> header, you must 
    manually configure an addition to the <code>Vary</code> header
    to alert proxies of the additional restrictions.  For example,
    in a typical configuration where the addition of the <code>DEFLATE</code>
    filter depends on the <code>User-Agent</code>, you should add:</p>

    <div class="example"><p><code>
      Header append Vary User-Agent
    </code></p></div>
    
    <p>If your decision about compression depends on other information
    than request headers (<em>e.g.</em> HTTP version), you have to set the
    <code>Vary</code> header to the value <code>*</code>. This prevents
    compliant proxies from caching entirely.</p>

    <div class="example"><h3>Example</h3><p><code>
      Header set Vary *
    </code></p></div>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateBufferSize" id="DeflateBufferSize">DeflateBufferSize</a> <a name="deflatebuffersize" id="deflatebuffersize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Fragment size to be compressed at one time by zlib</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateBufferSize <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateBufferSize 8096</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
</table>
    <p>The <code class="directive">DeflateBufferSize</code> directive specifies
    the size in bytes of the fragments that zlib should compress at one
    time.</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateCompressionLevel" id="DeflateCompressionLevel">DeflateCompressionLevel</a> <a name="deflatecompressionlevel" id="deflatecompressionlevel">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much compression do we apply to the output</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateCompressionLevel <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>Zlib's default</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>This directive is available since Apache 2.0.45</td></tr>
</table>
    <p>The <code class="directive">DeflateCompressionLevel</code> directive specifies
        what level of compression should be used, the higher the value, 
        the better the compression, but the more CPU time is required to
        achieve this.</p>
    <p>The value must between 1 (less compression) and 9 (more compression).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateFilterNote" id="DeflateFilterNote">DeflateFilterNote</a> <a name="deflatefilternote" id="deflatefilternote">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Places the compression ratio in a note for logging</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateFilterNote [<var>type</var>] <var>notename</var></code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
<tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td><var>type</var> is available since Apache 2.0.45</td></tr>
</table>
    <p>The <code class="directive">DeflateFilterNote</code> directive
    specifies that a note about compression ratios should be attached
    to the request. The name of the note is the value specified for
    the directive. You can use that note for statistical purposes by
    adding the value to your <a href="../logs.html#accesslog">access log</a>.</p>

    <div class="example"><h3>Example</h3><p><code>
      DeflateFilterNote ratio<br />
      <br />
      LogFormat '"%r" %b (%{ratio}n) "%{User-agent}i"' deflate<br />
      CustomLog logs/deflate_log deflate
    </code></p></div>

    <p>If you want to extract more accurate values from your logs, you
    can use the <var>type</var> argument to specify the type of data
    left as note for logging. <var>type</var> can be one of:</p>

    <dl>
      <dt><code>Input</code></dt>
      <dd>Store the byte count of the filter's input stream in the note.</dd>

      <dt><code>Output</code></dt>
      <dd>Store the byte count of the filter's output stream in the note.</dd>

      <dt><code>Ratio</code></dt>
      <dd>Store the compression ratio (<code>output/input * 100</code>)
      in the note. This is the default, if the <var>type</var> argument
      is omitted.</dd>
    </dl>

    <p>Thus you may log it this way:</p>

    <div class="example"><h3>Accurate Logging</h3><p><code>
      DeflateFilterNote Input instream<br />
      DeflateFilterNote Output outstream<br />
      DeflateFilterNote Ratio ratio<br />
      <br />
      LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate<br />
      CustomLog logs/deflate_log deflate
    </code></p></div>

<h3>See also</h3>
<ul>
<li><code class="module"><a href="../mod/mod_log_config.html">mod_log_config</a></code></li>
</ul>
</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateMemLevel" id="DeflateMemLevel">DeflateMemLevel</a> <a name="deflatememlevel" id="deflatememlevel">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>How much memory should be used by zlib for compression</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateMemLevel <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateMemLevel 9</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
</table>
    <p>The <code class="directive">DeflateMemLevel</code> directive specifies
    how much memory should be used by zlib for compression
    (a value between 1 and 9).</p>

</div>
<div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
<div class="directive-section"><h2><a name="DeflateWindowSize" id="DeflateWindowSize">DeflateWindowSize</a> <a name="deflatewindowsize" id="deflatewindowsize">Directive</a></h2>
<table class="directive">
<tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Zlib compression window size</td></tr>
<tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>DeflateWindowSize <var>value</var></code></td></tr>
<tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>DeflateWindowSize 15</code></td></tr>
<tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
<tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
<tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_deflate</td></tr>
</table>
    <p>The <code class="directive">DeflateWindowSize</code> directive specifies the
    zlib compression window size (a value between 1 and 15). Generally, the
    higher the window size, the higher can the compression ratio be expected.</p>

</div>
</div>
<div class="bottomlang">
<p><span>Available Languages: </span><a href="../en/mod/mod_deflate.html" title="English">&nbsp;en&nbsp;</a> |
<a href="../ja/mod/mod_deflate.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
<a href="../ko/mod/mod_deflate.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
</div><div id="footer">
<p class="apache">Copyright 2013 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>
<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>
</body></html>