| <!DOCTYPE html SYSTEM "about:legacy-compat"> | |
| <html lang="en"><head><META http-equiv="Content-Type" content="text/html; charset=UTF-8"> | |
| <meta content="width=device-width, initial-scale=1" name="viewport"> | |
| <!-- | |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
| This file is generated from xml source: DO NOT EDIT | |
| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX | |
| --> | |
| <title>mod_cache_disk - Apache HTTP Server Version 2.5</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 rel="stylesheet" type="text/css" href="../style/css/prettify.css"> | |
| <script src="../style/scripts/prettify.min.js"> | |
| </script> | |
| <link href="../images/favicon.png" rel="shortcut icon"></head> | |
| <body> | |
| <div id="page-header"> | |
| <p class="menu"><a href="../mod/">Modules</a> | <a href="../mod/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p> | |
| <p class="apache">Apache HTTP Server Version 2.5</p> | |
| <img alt="" src="../images/feather.png"></div> | |
| <div class="up"><a href="./"><img title="<-" alt="<-" src="../images/left.gif"></a></div> | |
| <div id="path"> | |
| <a href="https://www.apache.org/">Apache</a> > <a href="https://httpd.apache.org/">HTTP Server</a> > <a href="https://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.5</a> > <a href="./">Modules</a></div> | |
| <div id="page-content"> | |
| <div id="preamble"><h1>Apache Module mod_cache_disk</h1> | |
| <button aria-label="Toggle language list" class="lang-toggle"><svg xmlns="http://www.w3.org/2000/svg" stroke-width="2" stroke="currentColor" fill="none" viewBox="0 0 24 24" height="16" width="16"><circle r="10" cy="12" cx="12"/><line y2="12" x2="22" y1="12" x1="2"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/></svg></button> | |
| <div class="toplang"> | |
| <p><span>Available Languages: </span><a href="../en/mod/mod_cache_disk.html" title="English"> en </a> | | |
| <a href="../fr/mod/mod_cache_disk.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | | |
| <a href="../ja/mod/mod_cache_disk.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | | |
| <a href="../ko/mod/mod_cache_disk.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> | |
| </div> | |
| <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Disk based storage module for the HTTP caching filter.</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 Identifier:</a></th><td>cache_disk_module</td></tr> | |
| <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_cache_disk.c</td></tr></table> | |
| <h3>Summary</h3> | |
| <p><code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code> implements a disk based storage | |
| manager for <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>.</p> | |
| <p>The headers and bodies of cached responses are stored separately on | |
| disk, in a directory structure derived from the md5 hash of the cached | |
| URL.</p> | |
| <p>Multiple content negotiated responses can be stored concurrently, | |
| however the caching of partial content is not yet supported by this | |
| module.</p> | |
| <p>Atomic cache updates to both header and body files are achieved | |
| without the need for locking by storing the device and inode numbers of | |
| the body file within the header file. This has the side effect that | |
| cache entries manually moved into the cache will be ignored.</p> | |
| <p>The <code class="program"><a href="../programs/htcacheclean.html">htcacheclean</a></code> tool is provided to list cached | |
| URLs, remove cached URLs, or to maintain the size of the disk cache | |
| within size and/or inode limits. The tool can be run on demand, or | |
| can be daemonized to offer continuous monitoring of directory sizes.</p> | |
| <div class="note"><h3>Note:</h3> | |
| <p><code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code> requires the services of | |
| <code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code>, which must be | |
| loaded before mod_cache_disk.</p> | |
| </div> | |
| <div class="note"><h3>Note:</h3> | |
| <p><code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code> uses the sendfile feature to | |
| serve files from the cache when supported by the platform, and | |
| when enabled with <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code>. | |
| However, per-directory and .htaccess configuration of | |
| <code class="directive"><a href="../mod/core.html#enablesendfile">EnableSendfile</a></code> are ignored by | |
| <code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code> as the corresponding settings are not | |
| available to the module when a request is being served from the | |
| cache.</p> | |
| </div> | |
| </div> | |
| <div id="quickview"><h3 class="directives">Directives</h3> | |
| <ul id="toc"> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cachedirlength">CacheDirLength</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cachedirlevels">CacheDirLevels</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cachemaxfilesize">CacheMaxFileSize</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cacheminfilesize">CacheMinFileSize</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cachereadsize">CacheReadSize</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cachereadtime">CacheReadTime</a></li> | |
| <li><img alt="" src="../images/down.gif"> <a href="#cacheroot">CacheRoot</a></li> | |
| </ul> | |
| <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__&list_id=144532&product=Apache%20httpd-2&query_format=specific&order=changeddate%20DESC%2Cpriority%2Cbug_severity&component=mod_cache_disk">Known issues</a></li><li><a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2&component=mod_cache_disk">Report a bug</a></li></ul><h3>See also</h3> | |
| <ul class="seealso"> | |
| <li><code class="module"><a href="../mod/mod_cache.html">mod_cache</a></code></li> | |
| <li><code class="module"><a href="../mod/mod_cache_socache.html">mod_cache_socache</a></code></li> | |
| <li><a href="../caching.html">Caching Guide</a></li> | |
| </ul></div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cachedirlength"><span id="CacheDirLength">CacheDirLength</span> Directive <a title="Permanent link" href="#cachedirlength" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The number of characters in subdirectory names</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDirLength <var>length</var></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheDirLength 2</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheDirLength</code> directive sets the number | |
| of characters for each subdirectory name in the cache hierarchy. It can | |
| be used in conjunction with <code class="directive">CacheDirLevels</code> to | |
| determine the approximate structure of your cache hierarchy.</p> | |
| <p>A high value for <code class="directive">CacheDirLength</code> combined | |
| with a low value for <code class="directive">CacheDirLevels</code> will result in | |
| a relatively flat hierarchy, with a large number of subdirectories at each | |
| level.</p> | |
| <div class="note"> | |
| <p>The result of <code class="directive"><a href="#cachedirlevels">CacheDirLevels</a></code>* <code class="directive">CacheDirLength</code> | |
| must not be higher than 20.</p> | |
| </div> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cachedirlevels"><span id="CacheDirLevels">CacheDirLevels</span> Directive <a title="Permanent link" href="#cachedirlevels" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The number of levels of subdirectories in the | |
| cache.</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheDirLevels <var>levels</var></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheDirLevels 2</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheDirLevels</code> directive sets the number | |
| of subdirectory levels in the cache. Cached data will be saved this | |
| many directory levels below the <code class="directive"><a href="#cacheroot">CacheRoot</a></code> directory.</p> | |
| <p>A high value for <code class="directive">CacheDirLevels</code> combined | |
| with a low value for <code class="directive">CacheDirLength</code> will result in | |
| a relatively deep hierarchy, with a small number of subdirectories at each | |
| level.</p> | |
| <div class="note"> | |
| <p>The result of <code class="directive">CacheDirLevels</code>* | |
| <code class="directive"><a href="#cachedirlength">CacheDirLength</a></code> must | |
| not be higher than 20.</p> | |
| </div> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cachemaxfilesize"><span id="CacheMaxFileSize">CacheMaxFileSize</span> Directive <a title="Permanent link" href="#cachemaxfilesize" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The maximum size (in bytes) of a document to be placed in the | |
| cache</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheMaxFileSize <var>bytes</var></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheMaxFileSize 1000000</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheMaxFileSize</code> directive sets the | |
| maximum size, in bytes, for a document to be considered for storage in | |
| the cache.</p> | |
| <pre class="prettyprint lang-config">CacheMaxFileSize 64000</pre> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cacheminfilesize"><span id="CacheMinFileSize">CacheMinFileSize</span> Directive <a title="Permanent link" href="#cacheminfilesize" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The minimum size (in bytes) of a document to be placed in the | |
| cache</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheMinFileSize <var>bytes</var></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheMinFileSize 1</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheMinFileSize</code> directive sets the | |
| minimum size, in bytes, for a document to be considered for storage | |
| in the cache.</p> | |
| <pre class="prettyprint lang-config">CacheMinFileSize 64</pre> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cachereadsize"><span id="CacheReadSize">CacheReadSize</span> Directive <a title="Permanent link" href="#cachereadsize" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The minimum size (in bytes) of the document to read and be cached | |
| before sending the data downstream</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheReadSize <var>bytes</var></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheReadSize 0</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheReadSize</code> directive sets the | |
| minimum amount of data, in bytes, to be read from the backend before the | |
| data is sent to the client. The default of zero causes all data read of | |
| any size to be passed downstream to the client immediately as it arrives. | |
| Setting this to a higher value causes the disk cache to buffer at least | |
| this amount before sending the result to the client. This can improve | |
| performance when caching content from a reverse proxy.</p> | |
| <p>This directive only takes effect when the data is being saved to the | |
| cache, as opposed to data being served from the cache.</p> | |
| <pre class="prettyprint lang-config">CacheReadSize 102400</pre> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cachereadtime"><span id="CacheReadTime">CacheReadTime</span> Directive <a title="Permanent link" href="#cachereadtime" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The minimum time (in milliseconds) that should elapse while reading | |
| before data is sent downstream</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheReadTime <var>milliseconds</var></code></td></tr> | |
| <tr><th><a href="directive-dict.html#Default">Default:</a></th><td><code>CacheReadTime 0</code></td></tr> | |
| <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config, virtual host, directory, .htaccess</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheReadTime</code> directive sets the minimum amount | |
| of elapsed time that should pass before making an attempt to send data | |
| downstream to the client. During the time period, data will be buffered | |
| before sending the result to the client. This can improve performance when | |
| caching content from a reverse proxy.</p> | |
| <p>The default of zero disables this option.</p> | |
| <p>This directive only takes effect when the data is being saved to the | |
| cache, as opposed to data being served from the cache. It is recommended | |
| that this option be used alongside the | |
| <code class="directive"><a href="#cachereadsize">CacheReadSize</a></code> directive to | |
| ensure that the server does not buffer excessively should data arrive faster | |
| than expected.</p> | |
| <pre class="prettyprint lang-config">CacheReadTime 1000</pre> | |
| </div> | |
| <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif"></a></div> | |
| <div class="directive-section"><h2 id="cacheroot"><span id="CacheRoot">CacheRoot</span> Directive <a title="Permanent link" href="#cacheroot" class="permalink">¶</a></h2> | |
| <table class="directive"> | |
| <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>The directory root under which cache files are | |
| stored</td></tr> | |
| <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheRoot <var>directory</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_cache_disk</td></tr> | |
| </table> | |
| <p>The <code class="directive">CacheRoot</code> directive defines the name of | |
| the directory on the disk to contain cache files. If the <code class="module"><a href="../mod/mod_cache_disk.html">mod_cache_disk</a></code> module has been loaded or compiled in to the | |
| Apache server, this directive <em>must</em> be defined. Failing to | |
| provide a value for <code class="directive">CacheRoot</code> will result in | |
| a configuration file processing error. The <code class="directive"><a href="#cachedirlevels">CacheDirLevels</a></code> and <code class="directive"><a href="#cachedirlength">CacheDirLength</a></code> directives define | |
| the structure of the directories under the specified root directory.</p> | |
| <pre class="prettyprint lang-config">CacheRoot c:/cacheroot</pre> | |
| </div> | |
| </div> | |
| <div class="bottomlang"> | |
| <p><span>Available Languages: </span><a href="../en/mod/mod_cache_disk.html" title="English"> en </a> | | |
| <a href="../fr/mod/mod_cache_disk.html" hreflang="fr" rel="alternate" title="Français"> fr </a> | | |
| <a href="../ja/mod/mod_cache_disk.html" hreflang="ja" rel="alternate" title="Japanese"> ja </a> | | |
| <a href="../ko/mod/mod_cache_disk.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> | |
| </div><div id="footer"> | |
| <p class="apache">Copyright 2026 The Apache Software Foundation.<br>Licensed under the <a href="https://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/quickreference.html">Directives</a> | <a href="https://cwiki.apache.org/confluence/display/httpd/FAQ">FAQ</a> | <a href="../glossary.html">Glossary</a> | <a href="../sitemap.html">Sitemap</a> | <a href="https://bz.apache.org/bugzilla/enter_bug.cgi?product=Apache%20httpd-2">Report a bug</a></p></div><script><!--//--><![CDATA[//><!-- | |
| if (typeof(prettyPrint) !== 'undefined') { | |
| prettyPrint(); | |
| } | |
| var langToggle = document.querySelector('.lang-toggle'); | |
| var topLang = document.querySelector('.toplang'); | |
| if (langToggle && topLang) { | |
| langToggle.addEventListener('click', function() { topLang.classList.toggle('open'); }); | |
| } | |
| var qv = document.getElementById('quickview'); | |
| if (qv) { | |
| document.body.appendChild(qv); | |
| var qvBtn = document.createElement('button'); | |
| qvBtn.className = 'qv-toggle'; | |
| qvBtn.setAttribute('aria-label', 'Toggle page navigation'); | |
| qvBtn.innerHTML = '☰'; | |
| document.body.appendChild(qvBtn); | |
| qvBtn.addEventListener('click', function() { | |
| var isOpen = qv.classList.toggle('open'); | |
| if (isOpen) { | |
| qv.style.top = window.scrollY + 10 + 'px'; | |
| } | |
| }); | |
| window.addEventListener('scroll', function() { qv.classList.remove('open'); }); | |
| } | |
| //--><!]]></script> | |
| </body></html> |