github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/mod/mod_cache.html.en (about)

     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_cache - Apache HTTP Server Version 2.2</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" /><link href="http://httpd.apache.org/docs/current/mod/mod_cache.html" rel="canonical" /></head>
    18  <body>
    19  <div id="page-header">
    20  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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.2</p>
    22  <img alt="" src="../images/feather.gif" /></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.2</a> &gt; <a href="./">Modules</a></div>
    26  <div id="page-content">
    27  <div class="retired"><h4>Please note</h4>
    28              <p> This document refers to a legacy release (<strong>2.2</strong>) of Apache httpd. The active release (<strong>2.4</strong>) is documented <a href="http://httpd.apache.org/docs/current">here</a>. If you have not already upgraded, please follow <a href="http://httpd.apache.org/docs/current/upgrading.html">this link</a> for more information.</p>
    29          <p>You may follow <a href="http://httpd.apache.org/docs/current/mod/mod_cache.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_cache</h1>
    30  <div class="toplang">
    31  <p><span>Available Languages: </span><a href="../en/mod/mod_cache.html" title="English">&nbsp;en&nbsp;</a> |
    32  <a href="../ja/mod/mod_cache.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
    33  <a href="../ko/mod/mod_cache.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
    34  </div>
    35  <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Content cache keyed to URIs.</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>cache_module</td></tr>
    38  <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_cache.c</td></tr></table>
    39  <h3>Summary</h3>
    40  
    41      <div class="warning">This module should be used with care and
    42      can be used to circumvent <code class="directive"><a href="../mod/mod_authz_host.html#allow">Allow</a></code> and <code class="directive"><a href="../mod/mod_authz_host.html#deny">Deny</a></code> directives. You 
    43      should not enable caching for any content to which you wish
    44      to limit access by client host name, address or environment
    45      variable.</div>  
    46  
    47      <p><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> implements an <a href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> compliant HTTP
    48      content cache that can be used to cache either local or proxied content.
    49      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> requires the services of one or more storage
    50      management modules. Two storage management modules are included in
    51      the base Apache distribution:</p>
    52      <dl>
    53      <dt><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code></dt>
    54      <dd>implements a disk based storage manager.</dd>
    55  
    56      <dt><code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code></dt>
    57      <dd>implements a memory based storage manager. 
    58      <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> can be configured to operate in two
    59      modes: caching open file descriptors or caching objects in heap storage.
    60      <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code> can be used to cache locally generated content
    61      or to cache backend server content for <code class="module"><a href="../mod/mod_proxy.html">mod_proxy</a></code> when
    62      configured using <code class="directive"><a href="../mod/mod_proxy.html#proxypass">ProxyPass</a></code>
    63      (aka <dfn>reverse proxy</dfn>)</dd>
    64      </dl>
    65  
    66      <p>Content is stored in and retrieved from the cache using URI based keys. Content with
    67      access protection is not cached.</p>
    68      <p>Further details, discussion, and examples, are provided in the
    69      <a href="../caching.html">Caching Guide</a>.</p>
    70  </div>
    71  <div id="quickview"><h3>Topics</h3>
    72  <ul id="topics">
    73  <li><img alt="" src="../images/down.gif" /> <a href="#related">Related Modules and Directives</a></li>
    74  <li><img alt="" src="../images/down.gif" /> <a href="#sampleconf">Sample Configuration</a></li>
    75  <li><img alt="" src="../images/down.gif" /> <a href="#thunderingherd">Avoiding the Thundering Herd</a></li>
    76  </ul><h3 class="directives">Directives</h3>
    77  <ul id="toc">
    78  <li><img alt="" src="../images/down.gif" /> <a href="#cachedefaultexpire">CacheDefaultExpire</a></li>
    79  <li><img alt="" src="../images/down.gif" /> <a href="#cachedisable">CacheDisable</a></li>
    80  <li><img alt="" src="../images/down.gif" /> <a href="#cacheenable">CacheEnable</a></li>
    81  <li><img alt="" src="../images/down.gif" /> <a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></li>
    82  <li><img alt="" src="../images/down.gif" /> <a href="#cacheignoreheaders">CacheIgnoreHeaders</a></li>
    83  <li><img alt="" src="../images/down.gif" /> <a href="#cacheignorenolastmod">CacheIgnoreNoLastMod</a></li>
    84  <li><img alt="" src="../images/down.gif" /> <a href="#cacheignorequerystring">CacheIgnoreQueryString</a></li>
    85  <li><img alt="" src="../images/down.gif" /> <a href="#cacheignoreurlsessionidentifiers">CacheIgnoreURLSessionIdentifiers</a></li>
    86  <li><img alt="" src="../images/down.gif" /> <a href="#cachelastmodifiedfactor">CacheLastModifiedFactor</a></li>
    87  <li><img alt="" src="../images/down.gif" /> <a href="#cachelock">CacheLock</a></li>
    88  <li><img alt="" src="../images/down.gif" /> <a href="#cachelockmaxage">CacheLockMaxAge</a></li>
    89  <li><img alt="" src="../images/down.gif" /> <a href="#cachelockpath">CacheLockPath</a></li>
    90  <li><img alt="" src="../images/down.gif" /> <a href="#cachemaxexpire">CacheMaxExpire</a></li>
    91  <li><img alt="" src="../images/down.gif" /> <a href="#cachestorenostore">CacheStoreNoStore</a></li>
    92  <li><img alt="" src="../images/down.gif" /> <a href="#cachestoreprivate">CacheStorePrivate</a></li>
    93  </ul>
    94  <h3>See also</h3>
    95  <ul class="seealso">
    96  <li><a href="../caching.html">Caching Guide</a></li>
    97  </ul><ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div>
    98  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
    99  <div class="section">
   100  <h2><a name="related" id="related">Related Modules and Directives</a></h2>
   101      <table class="related"><tr><th>Related Modules</th><th>Related Directives</th></tr><tr><td><ul><li><code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code></li><li><code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code></li></ul></td><td><ul><li><code class="directive"><a href="../mod/mod_disk_cache.html#cacheroot">CacheRoot</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cachedirlevels">CacheDirLevels</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cachedirlength">CacheDirLength</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cacheminfilesize">CacheMinFileSize</a></code></li><li><code class="directive"><a href="../mod/mod_disk_cache.html#cachemaxfilesize">CacheMaxFileSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachesize">MCacheSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachemaxobjectcount">MCacheMaxObjectCount</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcacheminobjectsize">MCacheMinObjectSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachemaxobjectsize">MCacheMaxObjectSize</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcacheremovalalgorithm">MCacheRemovalAlgorithm</a></code></li><li><code class="directive"><a href="../mod/mod_mem_cache.html#mcachemaxstreamingbuffer">MCacheMaxStreamingBuffer</a></code></li></ul></td></tr></table>
   102  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   103  <div class="section">
   104  <h2><a name="sampleconf" id="sampleconf">Sample Configuration</a></h2>
   105      <div class="example"><h3>Sample httpd.conf</h3><p><code>
   106        #<br />
   107        # Sample Cache Configuration<br />
   108        #<br />
   109        LoadModule cache_module modules/mod_cache.so<br />
   110        <br />
   111        &lt;IfModule mod_cache.c&gt;<br />
   112        <span class="indent">
   113          #LoadModule disk_cache_module modules/mod_disk_cache.so<br />
   114          # If you want to use mod_disk_cache instead of mod_mem_cache,<br />
   115          # uncomment the line above and comment out the LoadModule line below.<br />
   116          &lt;IfModule mod_disk_cache.c&gt;<br />
   117          <span class="indent">
   118            CacheRoot c:/cacheroot<br />
   119            CacheEnable disk  /<br />
   120            CacheDirLevels 5<br />
   121            CacheDirLength 3<br />
   122          </span>
   123          &lt;/IfModule&gt; <br />
   124          <br />
   125          LoadModule mem_cache_module modules/mod_mem_cache.so<br />
   126          &lt;IfModule mod_mem_cache.c&gt;<br />
   127          <span class="indent">
   128            CacheEnable mem  /<br />
   129            MCacheSize 4096<br />
   130            MCacheMaxObjectCount 100<br />
   131            MCacheMinObjectSize 1<br />
   132            MCacheMaxObjectSize 2048<br />
   133          </span>
   134          &lt;/IfModule&gt;<br />
   135          <br />
   136          # When acting as a proxy, don't cache the list of security updates<br />
   137          CacheDisable http://security.update.server/update-list/<br />
   138        </span>
   139        &lt;/IfModule&gt;
   140      </code></p></div>
   141  </div><div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   142  <div class="section">
   143  <h2><a name="thunderingherd" id="thunderingherd">Avoiding the Thundering Herd</a></h2>
   144    <p>When a cached entry becomes stale, <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> will submit
   145    a conditional request to the backend, which is expected to confirm whether the
   146    cached entry is still fresh, and send an updated entity if not.</p>
   147    <p>A small but finite amount of time exists between the time the cached entity
   148    becomes stale, and the time the stale entity is fully refreshed. On a busy
   149    server, a significant number of requests might arrive during this time, and
   150    cause a <strong>thundering herd</strong> of requests to strike the backend
   151    suddenly and unpredictably.</p>
   152    <p>To keep the thundering herd at bay, the <code class="directive">CacheLock</code>
   153    directive can be used to define a directory in which locks are created for
   154    URLs <strong>in flight</strong>. The lock is used as a <strong>hint</strong>
   155    by other requests to either suppress an attempt to cache (someone else has
   156    gone to fetch the entity), or to indicate that a stale entry is being refreshed
   157    (stale content will be returned in the mean time).
   158    </p>
   159    <h3>Initial caching of an entry</h3>
   160      
   161      <p>When an entity is cached for the first time, a lock will be created for the
   162      entity until the response has been fully cached. During the lifetime of the
   163      lock, the cache will suppress the second and subsequent attempt to cache the
   164      same entity. While this doesn't hold back the thundering herd, it does stop
   165      the cache attempting to cache the same entity multiple times simultaneously.
   166      </p>
   167    
   168    <h3>Refreshment of a stale entry</h3>
   169      
   170      <p>When an entity reaches its freshness lifetime and becomes stale, a lock
   171      will be created for the entity until the response has either been confirmed as
   172      still fresh, or replaced by the backend. During the lifetime of the lock, the
   173      second and subsequent incoming request will cause stale data to be returned,
   174      and the thundering herd is kept at bay.</p>
   175    
   176    <h3>Locks and Cache-Control: no-cache</h3>
   177      
   178      <p>Locks are used as a <strong>hint only</strong> to enable the cache to be
   179      more gentle on backend servers, however the lock can be overridden if necessary.
   180      If the client sends a request with a Cache-Control header forcing a reload, any
   181      lock that may be present will be ignored, and the client's request will be
   182      honoured immediately and the cached entry refreshed.</p>
   183      <p>As a further safety mechanism, locks have a configurable maximum age.
   184      Once this age has been reached, the lock is removed, and a new request is
   185      given the opportunity to create a new lock. This maximum age can be set using
   186      the <code class="directive">CacheLockMaxAge</code> directive, and defaults to 5
   187      seconds.
   188      </p>
   189    
   190    <h3>Example configuration</h3>
   191      
   192      <div class="example"><h3>Enabling the cache lock</h3><p><code>
   193        #<br />
   194        # Enable the cache lock<br />
   195        #<br />
   196        &lt;IfModule mod_cache.c&gt;<br />
   197        <span class="indent">
   198          CacheLock on<br />
   199          CacheLockPath /tmp/mod_cache-lock<br />
   200          CacheLockMaxAge 5<br />
   201        </span>
   202        &lt;/IfModule&gt;
   203      </code></p></div>
   204    
   205  </div>
   206  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   207  <div class="directive-section"><h2><a name="CacheDefaultExpire" id="CacheDefaultExpire">CacheDefaultExpire</a> <a name="cachedefaultexpire" id="cachedefaultexpire">Directive</a></h2>
   208  <table class="directive">
   209  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The default duration to cache a document when no expiry date is specified.</td></tr>
   210  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDefaultExpire <var>seconds</var></code></td></tr>
   211  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheDefaultExpire 3600 (one hour)</code></td></tr>
   212  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   213  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   214  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   215  </table>
   216      <p>The <code class="directive">CacheDefaultExpire</code> directive specifies a default time,
   217      in seconds, to cache a document if neither an expiry date nor last-modified date are provided
   218      with the document. The value specified with the <code class="directive">CacheMaxExpire</code>
   219      directive does <em>not</em> override this setting.</p>
   220  
   221      <div class="example"><p><code>
   222        CacheDefaultExpire 86400
   223      </code></p></div>
   224  
   225  </div>
   226  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   227  <div class="directive-section"><h2><a name="CacheDisable" id="CacheDisable">CacheDisable</a> <a name="cachedisable" id="cachedisable">Directive</a></h2>
   228  <table class="directive">
   229  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Disable caching of specified URLs</td></tr>
   230  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDisable <var> url-string</var></code></td></tr>
   231  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   232  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   233  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   234  </table>
   235      <p>The <code class="directive">CacheDisable</code> directive instructs
   236      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to <em>not</em> cache urls at or below
   237      <var>url-string</var>.</p>
   238  
   239      <div class="example"><h3>Example</h3><p><code>
   240        CacheDisable /local_files
   241      </code></p></div>
   242  
   243      <p> The <code>no-cache</code> environment variable can be set to 
   244      disable caching on a finer grained set of resources in versions
   245      2.2.12 and later.</p>
   246  
   247  
   248  <h3>See also</h3>
   249  <ul>
   250  <li><a href="../env.html">Environment Variables in Apache</a></li>
   251  </ul>
   252  </div>
   253  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   254  <div class="directive-section"><h2><a name="CacheEnable" id="CacheEnable">CacheEnable</a> <a name="cacheenable" id="cacheenable">Directive</a></h2>
   255  <table class="directive">
   256  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable caching of specified URLs using a specified storage
   257  manager</td></tr>
   258  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheEnable <var>cache_type</var> <var>url-string</var></code></td></tr>
   259  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   260  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   261  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   262  </table>
   263      <p>The <code class="directive">CacheEnable</code> directive instructs
   264      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to cache urls at or below
   265      <var>url-string</var>. The cache storage manager is specified with the
   266      <var>cache_type</var> argument. <var>cache_type</var> <code> mem</code>
   267      instructs <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to use the memory based storage
   268      manager implemented by <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code>. 
   269      <var>cache_type</var> <code>disk</code> instructs
   270      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to use the disk based storage manager
   271      implemented by <code class="module"><a href="../mod/mod_disk_cache.html">mod_disk_cache</a></code>.
   272      <var>cache_type</var> <code>fd</code> instructs
   273      <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code> to use the file descriptor cache implemented
   274      by <code class="module"><a href="../mod/mod_mem_cache.html">mod_mem_cache</a></code>.</p>
   275      <p>In the event that the URL space overlaps between different
   276      <code class="directive">CacheEnable</code> directives (as in the example below),
   277      each possible storage manager will be run until the first one that
   278      actually processes the request. The order in which the storage managers are
   279      run is determined by the order of the <code class="directive">CacheEnable</code>
   280      directives in the configuration file.</p>
   281  
   282      <div class="example"><p><code>
   283        CacheEnable  mem   /manual<br />
   284        CacheEnable  fd    /images<br />
   285        CacheEnable  disk  /<br />
   286      </code></p></div>
   287  
   288      <p>When acting as a forward proxy server, <var>url-string</var> can
   289      also be used to specify remote sites and proxy protocols which 
   290      caching should be enabled for.</p>
   291   
   292      <div class="example"><p><code>
   293        # Cache proxied url's<br />
   294        CacheEnable  disk  /<br /><br />
   295        # Cache FTP-proxied url's<br />
   296        CacheEnable  disk  ftp://<br /><br />
   297        # Cache content from www.apache.org<br />
   298        CacheEnable  disk  http://www.apache.org/<br />
   299      </code></p></div>
   300  
   301      <p> The <code>no-cache</code> environment variable can be set to 
   302      disable caching on a finer grained set of resources in versions
   303      2.2.12 and later.</p>
   304  
   305  
   306  <h3>See also</h3>
   307  <ul>
   308  <li><a href="../env.html">Environment Variables in Apache</a></li>
   309  </ul>
   310  </div>
   311  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   312  <div class="directive-section"><h2><a name="CacheIgnoreCacheControl" id="CacheIgnoreCacheControl">CacheIgnoreCacheControl</a> <a name="cacheignorecachecontrol" id="cacheignorecachecontrol">Directive</a></h2>
   313  <table class="directive">
   314  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore request to not serve cached content to client</td></tr>
   315  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreCacheControl On|Off</code></td></tr>
   316  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreCacheControl Off</code></td></tr>
   317  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   318  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   319  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   320  </table>
   321      <p>Ordinarily, requests containing a Cache-Control: no-cache or
   322      Pragma: no-cache header value will not be served from the cache.  The
   323      <code class="directive">CacheIgnoreCacheControl</code> directive allows this
   324      behavior to be overridden.  <code class="directive">CacheIgnoreCacheControl</code>
   325      On tells the server to attempt to serve the resource from the cache even
   326      if the request contains no-cache header values.  Resources requiring
   327      authorization will <em>never</em> be cached.</p>
   328  
   329      <div class="example"><p><code>
   330        CacheIgnoreCacheControl On
   331      </code></p></div>
   332  
   333      <div class="warning"><h3>Warning:</h3>
   334         This directive will allow serving from the cache even if the client has
   335         requested that the document not be served from the cache.  This might
   336         result in stale content being served.
   337      </div>
   338  
   339  <h3>See also</h3>
   340  <ul>
   341  <li><code class="directive"><a href="#cachestoreprivate">CacheStorePrivate</a></code></li>
   342  <li><code class="directive"><a href="#cachestorenostore">CacheStoreNoStore</a></code></li>
   343  </ul>
   344  </div>
   345  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   346  <div class="directive-section"><h2><a name="CacheIgnoreHeaders" id="CacheIgnoreHeaders">CacheIgnoreHeaders</a> <a name="cacheignoreheaders" id="cacheignoreheaders">Directive</a></h2>
   347  <table class="directive">
   348  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Do not store the given HTTP header(s) in the cache.
   349  </td></tr>
   350  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreHeaders <var>header-string</var> [<var>header-string</var>] ...</code></td></tr>
   351  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreHeaders None</code></td></tr>
   352  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   353  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   354  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   355  </table>
   356      <p>According to RFC 2616, hop-by-hop HTTP headers are not stored in
   357      the cache.  The following HTTP headers are hop-by-hop headers and thus
   358      do not get stored in the cache in <em>any</em> case regardless of the
   359      setting of <code class="directive">CacheIgnoreHeaders</code>:</p>
   360  
   361      <ul>
   362        <li><code>Connection</code></li>
   363        <li><code>Keep-Alive</code></li>
   364        <li><code>Proxy-Authenticate</code></li>
   365        <li><code>Proxy-Authorization</code></li>
   366        <li><code>TE</code></li>
   367        <li><code>Trailers</code></li>
   368        <li><code>Transfer-Encoding</code></li>
   369        <li><code>Upgrade</code></li>
   370      </ul>
   371  
   372      <p><code class="directive">CacheIgnoreHeaders</code> specifies additional HTTP
   373      headers that should not to be stored in the cache.  For example, it makes
   374      sense in some cases to prevent cookies from being stored in the cache.</p>
   375  
   376      <p><code class="directive">CacheIgnoreHeaders</code> takes a space separated list
   377      of HTTP headers that should not be stored in the cache. If only hop-by-hop
   378      headers not should be stored in the cache (the RFC 2616 compliant
   379      behaviour), <code class="directive">CacheIgnoreHeaders</code> can be set to
   380      <code>None</code>.</p>
   381  
   382      <div class="example"><h3>Example 1</h3><p><code>
   383        CacheIgnoreHeaders Set-Cookie
   384      </code></p></div>
   385  
   386      <div class="example"><h3>Example 2</h3><p><code>
   387        CacheIgnoreHeaders None
   388      </code></p></div>
   389  
   390      <div class="warning"><h3>Warning:</h3>
   391        If headers like <code>Expires</code> which are needed for proper cache
   392        management are not stored due to a
   393        <code class="directive">CacheIgnoreHeaders</code> setting, the behaviour of
   394        mod_cache is undefined.
   395      </div>
   396  
   397  </div>
   398  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   399  <div class="directive-section"><h2><a name="CacheIgnoreNoLastMod" id="CacheIgnoreNoLastMod">CacheIgnoreNoLastMod</a> <a name="cacheignorenolastmod" id="cacheignorenolastmod">Directive</a></h2>
   400  <table class="directive">
   401  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore the fact that a response has no Last Modified
   402  header.</td></tr>
   403  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreNoLastMod On|Off</code></td></tr>
   404  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreNoLastMod Off</code></td></tr>
   405  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   406  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   407  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   408  </table>
   409      <p>Ordinarily, documents without a last-modified date are not cached.
   410      Under some circumstances the last-modified date is removed (during
   411      <code class="module"><a href="../mod/mod_include.html">mod_include</a></code> processing for example) or not provided
   412      at all. The <code class="directive">CacheIgnoreNoLastMod</code> directive
   413      provides a way to specify that documents without last-modified dates
   414      should be considered for caching, even without a last-modified date.
   415      If neither a last-modified date nor an expiry date are provided with
   416      the document then the value specified by the
   417      <code class="directive">CacheDefaultExpire</code> directive will be used to
   418      generate an expiration date.</p>
   419  
   420      <div class="example"><p><code>
   421        CacheIgnoreNoLastMod On
   422      </code></p></div>
   423  
   424  </div>
   425  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   426  <div class="directive-section"><h2><a name="CacheIgnoreQueryString" id="CacheIgnoreQueryString">CacheIgnoreQueryString</a> <a name="cacheignorequerystring" id="cacheignorequerystring">Directive</a></h2>
   427  <table class="directive">
   428  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore query string when caching</td></tr>
   429  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreQueryString On|Off</code></td></tr>
   430  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreQueryString Off</code></td></tr>
   431  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   432  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   433  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   434  <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.6 and later</td></tr>
   435  </table>
   436      <p>Ordinarily, requests with query string parameters are cached separately
   437      for each unique query string. This is according to RFC 2616/13.9 done only
   438      if an expiration time is specified. The 
   439      <code class="directive">CacheIgnoreQueryString</code> directive tells the cache to
   440      cache requests even if no expiration time is specified, and to reply with 
   441      a cached reply even if the query string differs. From a caching point of
   442      view the request is treated as if having no query string when this 
   443      directive is enabled.</p>
   444  
   445      <div class="example"><p><code>
   446        CacheIgnoreQueryString On
   447      </code></p></div>
   448  
   449  
   450  </div>
   451  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   452  <div class="directive-section"><h2><a name="CacheIgnoreURLSessionIdentifiers" id="CacheIgnoreURLSessionIdentifiers">CacheIgnoreURLSessionIdentifiers</a> <a name="cacheignoreurlsessionidentifiers" id="cacheignoreurlsessionidentifiers">Directive</a></h2>
   453  <table class="directive">
   454  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Ignore defined session identifiers encoded in the URL when caching
   455  </td></tr>
   456  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheIgnoreURLSessionIdentifiers <var>identifier</var> [<var>identifier</var>] ...</code></td></tr>
   457  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheIgnoreURLSessionIdentifiers None</code></td></tr>
   458  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   459  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   460  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   461  </table>
   462      <p>Sometimes applications encode the session identifier into the URL like in the following
   463      Examples:
   464      </p>
   465      <ul>
   466        <li><code>/someapplication/image.gif;jsessionid=123456789</code></li>
   467        <li><code>/someapplication/image.gif?PHPSESSIONID=12345678</code></li>
   468      </ul>
   469      <p>This causes cachable resources to be stored separately for each session, which
   470      is often not desired. <code class="directive">CacheIgnoreURLSessionIdentifiers</code> lets
   471      define a list of identifiers that are removed from the key that is used to identify
   472      an entity in the cache, such that cachable resources are not stored separately for
   473      each session.
   474      </p>
   475      <p><code>CacheIgnoreURLSessionIdentifiers None</code> clears the list of ignored
   476      identifiers. Otherwise, each identifier is added to the list.</p>
   477  
   478      <div class="example"><h3>Example 1</h3><p><code>
   479        CacheIgnoreURLSessionIdentifiers jsessionid
   480      </code></p></div>
   481  
   482      <div class="example"><h3>Example 2</h3><p><code>
   483        CacheIgnoreURLSessionIdentifiers None
   484      </code></p></div>
   485  
   486  
   487  </div>
   488  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   489  <div class="directive-section"><h2><a name="CacheLastModifiedFactor" id="CacheLastModifiedFactor">CacheLastModifiedFactor</a> <a name="cachelastmodifiedfactor" id="cachelastmodifiedfactor">Directive</a></h2>
   490  <table class="directive">
   491  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The factor used to compute an expiry date based on the
   492  LastModified date.</td></tr>
   493  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheLastModifiedFactor <var>float</var></code></td></tr>
   494  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheLastModifiedFactor 0.1</code></td></tr>
   495  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   496  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   497  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   498  </table>
   499      <p>In the event that a document does not provide an expiry date but does
   500      provide a last-modified date, an expiry date can be calculated based on
   501      the time since the document was last modified. The
   502      <code class="directive">CacheLastModifiedFactor</code> directive specifies a
   503      <var>factor</var> to be used in the generation of this expiry date
   504      according to the following formula:
   505  
   506      <code>expiry-period = time-since-last-modified-date * <var>factor</var>
   507      expiry-date = current-date + expiry-period</code>
   508  
   509      For example, if the document was last modified 10 hours ago, and
   510      <var>factor</var> is 0.1 then the expiry-period will be set to
   511      10*0.1 = 1 hour. If the current time was 3:00pm then the computed
   512      expiry-date would be 3:00pm + 1hour = 4:00pm.
   513  
   514      If the expiry-period would be longer than that set by
   515      <code class="directive">CacheMaxExpire</code>, then the latter takes
   516      precedence.</p>
   517  
   518      <div class="example"><p><code>
   519        CacheLastModifiedFactor 0.5
   520      </code></p></div>
   521  
   522  </div>
   523  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   524  <div class="directive-section"><h2><a name="CacheLock" id="CacheLock">CacheLock</a> <a name="cachelock" id="cachelock">Directive</a></h2>
   525  <table class="directive">
   526  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Enable the thundering herd lock.</td></tr>
   527  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheLock <var>on|off</var></code></td></tr>
   528  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheLock off</code></td></tr>
   529  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   530  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   531  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   532  <tr><th><a href="directive-dict.html#Compatibility">Compatibility:</a></th><td>Available in Apache 2.2.15 and later</td></tr>
   533  </table>
   534    <p>The <code class="directive">CacheLock</code> directive enables the thundering herd lock
   535    for the given URL space.</p>
   536    
   537    <p>In a minimal configuration the following directive is all that is needed to
   538    enable the thundering herd lock in the default system temp directory.</p>
   539  
   540    <div class="example"><p><code>
   541      # Enable chache lock<br />
   542      CacheLock on<br /><br />
   543    </code></p></div>
   544  
   545  
   546  </div>
   547  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   548  <div class="directive-section"><h2><a name="CacheLockMaxAge" id="CacheLockMaxAge">CacheLockMaxAge</a> <a name="cachelockmaxage" id="cachelockmaxage">Directive</a></h2>
   549  <table class="directive">
   550  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Set the maximum possible age of a cache lock.</td></tr>
   551  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheLockMaxAge <var>integer</var></code></td></tr>
   552  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheLockMaxAge 5</code></td></tr>
   553  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   554  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   555  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   556  </table>
   557    <p>The <code class="directive">CacheLockMaxAge</code> directive specifies the maximum
   558    age of any cache lock.</p>
   559    
   560    <p>A lock older than this value in seconds will be ignored, and the next
   561    incoming request will be given the opportunity to re-establish the lock.
   562    This mechanism prevents a slow client taking an excessively long time to refresh
   563    an entity.</p>
   564    
   565  
   566  </div>
   567  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   568  <div class="directive-section"><h2><a name="CacheLockPath" id="CacheLockPath">CacheLockPath</a> <a name="cachelockpath" id="cachelockpath">Directive</a></h2>
   569  <table class="directive">
   570  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Set the lock path directory.</td></tr>
   571  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheLockPath <var>directory</var></code></td></tr>
   572  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheLockPath /tmp/mod_cache-lock</code></td></tr>
   573  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   574  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   575  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   576  </table>
   577    <p>The <code class="directive">CacheLockPath</code> directive allows you to specify the
   578    directory in which the locks are created. By default, the system's temporary
   579    folder is used. Locks consist of empty files that only exist for stale URLs
   580    in flight, so is significantly less resource intensive than the traditional
   581    disk cache.</p>
   582  
   583  
   584  </div>
   585  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   586  <div class="directive-section"><h2><a name="CacheMaxExpire" id="CacheMaxExpire">CacheMaxExpire</a> <a name="cachemaxexpire" id="cachemaxexpire">Directive</a></h2>
   587  <table class="directive">
   588  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum time in seconds to cache a document</td></tr>
   589  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheMaxExpire <var>seconds</var></code></td></tr>
   590  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheMaxExpire 86400 (one day)</code></td></tr>
   591  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   592  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   593  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   594  </table>
   595      <p>The <code class="directive">CacheMaxExpire</code> directive specifies the maximum number of
   596      seconds for which cachable HTTP documents will be retained without checking the origin
   597      server. Thus, documents will be out of date at most this number of seconds. This maximum
   598      value is enforced even if an expiry date was supplied with the document.</p>
   599  
   600      <div class="example"><p><code>
   601        CacheMaxExpire 604800
   602      </code></p></div>
   603  
   604  </div>
   605  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   606  <div class="directive-section"><h2><a name="CacheStoreNoStore" id="CacheStoreNoStore">CacheStoreNoStore</a> <a name="cachestorenostore" id="cachestorenostore">Directive</a></h2>
   607  <table class="directive">
   608  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Attempt to cache requests or responses that have been marked as no-store.</td></tr>
   609  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheStoreNoStore On|Off</code></td></tr>
   610  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheStoreNoStore Off</code></td></tr>
   611  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   612  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   613  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   614  </table>
   615      <p>Ordinarily, requests or responses with Cache-Control: no-store header
   616         values will not be stored in the cache.  The
   617         <code class="directive">CacheStoreNoStore</code> directive allows this
   618         behavior to be overridden.  <code class="directive">CacheStoreNoStore</code> On
   619         tells the server to attempt to cache the resource even if it contains
   620         no-store header values.  Resources requiring authorization will
   621         <em>never</em> be cached.</p>
   622  
   623      <div class="example"><p><code>
   624        CacheStoreNoStore On
   625      </code></p></div>
   626  
   627      <div class="warning"><h3>Warning:</h3>
   628         As described in RFC 2616, the no-store directive is intended to
   629         "prevent the inadvertent release or retention of sensitive information
   630         (for example, on backup tapes)."  Enabling this option could store
   631         sensitive information in the cache.  You are hereby warned.
   632      </div>
   633  
   634  <h3>See also</h3>
   635  <ul>
   636  <li><code class="directive"><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></code></li>
   637  <li><code class="directive"><a href="#cachestoreprivate">CacheStorePrivate</a></code></li>
   638  </ul>
   639  </div>
   640  <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div>
   641  <div class="directive-section"><h2><a name="CacheStorePrivate" id="CacheStorePrivate">CacheStorePrivate</a> <a name="cachestoreprivate" id="cachestoreprivate">Directive</a></h2>
   642  <table class="directive">
   643  <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Attempt to cache responses that the server has marked as private</td></tr>
   644  <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheStorePrivate On|Off</code></td></tr>
   645  <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheStorePrivate Off</code></td></tr>
   646  <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host</td></tr>
   647  <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Extension</td></tr>
   648  <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_cache</td></tr>
   649  </table>
   650      <p>Ordinarily, responses with Cache-Control: private header values will not
   651         be stored in the cache.  The <code class="directive">CacheStorePrivate</code>
   652         directive allows this behavior to be overridden.
   653         <code class="directive">CacheStorePrivate</code> On
   654         tells the server to attempt to cache the resource even if it contains
   655         private header values.  Resources requiring authorization will
   656         <em>never</em> be cached.</p>
   657  
   658      <div class="example"><p><code>
   659        CacheStorePrivate On
   660      </code></p></div>
   661  
   662      <div class="warning"><h3>Warning:</h3>
   663         This directive will allow caching even if the upstream server has
   664         requested that the resource not be cached.  This directive is only
   665         ideal for a 'private' cache.
   666      </div>
   667  
   668  <h3>See also</h3>
   669  <ul>
   670  <li><code class="directive"><a href="#cacheignorecachecontrol">CacheIgnoreCacheControl</a></code></li>
   671  <li><code class="directive"><a href="#cachestorenostore">CacheStoreNoStore</a></code></li>
   672  </ul>
   673  </div>
   674  </div>
   675  <div class="bottomlang">
   676  <p><span>Available Languages: </span><a href="../en/mod/mod_cache.html" title="English">&nbsp;en&nbsp;</a> |
   677  <a href="../ja/mod/mod_cache.html" hreflang="ja" rel="alternate" title="Japanese">&nbsp;ja&nbsp;</a> |
   678  <a href="../ko/mod/mod_cache.html" hreflang="ko" rel="alternate" title="Korean">&nbsp;ko&nbsp;</a></p>
   679  </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>
   680  <script type="text/javascript"><!--//--><![CDATA[//><!--
   681  var comments_shortname = 'httpd';
   682  var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_cache.html';
   683  (function(w, d) {
   684      if (w.location.hostname.toLowerCase() == "httpd.apache.org") {
   685          d.write('<div id="comments_thread"><\/div>');
   686          var s = d.createElement('script');
   687          s.type = 'text/javascript';
   688          s.async = true;
   689          s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
   690          (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
   691      }
   692      else { 
   693          d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>');
   694      }
   695  })(window, document);
   696  //--><!]]></script></div><div id="footer">
   697  <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>
   698  <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/directives.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[//><!--
   699  if (typeof(prettyPrint) !== 'undefined') {
   700      prettyPrint();
   701  }
   702  //--><!]]></script>
   703  </body></html>