github.com/krum110487/go-htaccess@v0.0.0-20240316004156-60641c8e7598/tests/data/apache_2_2_34/manual/mod/mod_file_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_file_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_file_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="<-" alt="<-" src="../images/left.gif" /></a></div> 24 <div id="path"> 25 <a href="http://www.apache.org/">Apache</a> > <a href="http://httpd.apache.org/">HTTP Server</a> > <a href="http://httpd.apache.org/docs/">Documentation</a> > <a href="../">Version 2.2</a> > <a href="./">Modules</a></div> 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_file_cache.html">this link</a> to go to the current version of this document.</p></div><div id="preamble"><h1>Apache Module mod_file_cache</h1> 30 <div class="toplang"> 31 <p><span>Available Languages: </span><a href="../en/mod/mod_file_cache.html" title="English"> en </a> | 32 <a href="../ko/mod/mod_file_cache.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 33 </div> 34 <table class="module"><tr><th><a href="module-dict.html#Description">Description:</a></th><td>Caches a static list of files in memory</td></tr> 35 <tr><th><a href="module-dict.html#Status">Status:</a></th><td>Experimental</td></tr> 36 <tr><th><a href="module-dict.html#ModuleIdentifier">Module Identifier:</a></th><td>file_cache_module</td></tr> 37 <tr><th><a href="module-dict.html#SourceFile">Source File:</a></th><td>mod_file_cache.c</td></tr></table> 38 <h3>Summary</h3> 39 40 41 <div class="warning"> 42 This module should be used with care. You can easily create a broken 43 site using <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code>, so read this document 44 carefully. 45 </div> 46 47 <p><em>Caching</em> frequently requested files that change very 48 infrequently is a technique for reducing server load. 49 <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> provides two techniques for caching 50 frequently requested <em>static</em> files. Through configuration 51 directives, you can direct <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> to either 52 open then <code>mmap()</code> a file, or to pre-open a file and save 53 the file's open <em>file handle</em>. Both techniques reduce server 54 load when processing requests for these files by doing part of the work 55 (specifically, the file I/O) for serving the file when the 56 server is started rather than during each request.</p> 57 58 <p>Notice: You cannot use this for speeding up CGI programs or 59 other files which are served by special content handlers. It 60 can only be used for regular files which are usually served by 61 the Apache core content handler.</p> 62 63 <p>This module is an extension of and borrows heavily from the 64 <code>mod_mmap_static</code> module in Apache 1.3.</p> 65 </div> 66 <div id="quickview"><h3>Topics</h3> 67 <ul id="topics"> 68 <li><img alt="" src="../images/down.gif" /> <a href="#using">Using mod_file_cache</a></li> 69 </ul><h3 class="directives">Directives</h3> 70 <ul id="toc"> 71 <li><img alt="" src="../images/down.gif" /> <a href="#cachefile">CacheFile</a></li> 72 <li><img alt="" src="../images/down.gif" /> <a href="#mmapfile">MMapFile</a></li> 73 </ul> 74 <ul class="seealso"><li><a href="#comments_section">Comments</a></li></ul></div> 75 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 76 <div class="section"> 77 <h2><a name="using" id="using">Using mod_file_cache</a></h2> 78 79 <p><code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> caches a list of statically 80 configured files via <code class="directive"><a href="#mmapfile">MMapFile</a></code> or <code class="directive"><a href="#cachefile">CacheFile</a></code> directives in the main server configuration.</p> 81 82 <p>Not all platforms support both directives. You will receive an error 83 message in the server error log if you attempt to use an 84 unsupported directive. If given an unsupported directive, the 85 server will start but the file will not be cached. On platforms 86 that support both directives, you should experiment with both to 87 see which works best for you.</p> 88 89 <h3>MMapFile Directive</h3> 90 91 <p>The <code class="directive"><a href="#mmapfile">MMapFile</a></code> 92 directive of <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> maps a list of 93 statically configured files into memory through the system call 94 <code>mmap()</code>. This system call is available on most modern 95 Unix derivates, but not on all. There are sometimes system-specific 96 limits on the size and number of files that can be 97 <code>mmap()</code>ed, experimentation is probably the easiest way 98 to find out.</p> 99 100 <p>This <code>mmap()</code>ing is done once at server start or 101 restart, only. So whenever one of the mapped files changes on the 102 filesystem you <em>have</em> to restart the server (see the <a href="../stopping.html">Stopping and Restarting</a> documentation). 103 To reiterate that point: if the files are modified <em>in place</em> 104 without restarting the server you may end up serving requests that 105 are completely bogus. You should update files by unlinking the old 106 copy and putting a new copy in place. Most tools such as 107 <code>rdist</code> and <code>mv</code> do this. The reason why this 108 modules doesn't take care of changes to the files is that this check 109 would need an extra <code>stat()</code> every time which is a waste 110 and against the intent of I/O reduction.</p> 111 112 113 <h3>CacheFile Directive</h3> 114 115 <p>The <code class="directive"><a href="#cachefile">CacheFile</a></code> 116 directive of <code class="module"><a href="../mod/mod_file_cache.html">mod_file_cache</a></code> opens an active 117 <em>handle</em> or <em>file descriptor</em> to the file (or files) 118 listed in the configuration directive and places these open file 119 handles in the cache. When the file is requested, the server 120 retrieves the handle from the cache and passes it to the 121 <code>sendfile()</code> (or <code>TransmitFile()</code> on Windows), 122 socket API.</p> 123 124 125 126 <p>This file handle caching is done once at server start or 127 restart, only. So whenever one of the cached files changes on 128 the filesystem you <em>have</em> to restart the server (see the 129 <a href="../stopping.html">Stopping and Restarting</a> 130 documentation). To reiterate that point: if the files are 131 modified <em>in place</em> without restarting the server you 132 may end up serving requests that are completely bogus. You 133 should update files by unlinking the old copy and putting a new 134 copy in place. Most tools such as <code>rdist</code> and 135 <code>mv</code> do this.</p> 136 137 138 <div class="note"><h3>Note</h3> 139 <p>Don't bother asking for a directive which recursively 140 caches all the files in a directory. Try this instead... See the 141 <code class="directive"><a href="../mod/core.html#include">Include</a></code> directive, and consider 142 this command:</p> 143 144 <div class="example"><p><code> 145 find /www/htdocs -type f -print \<br /> 146 | sed -e 's/.*/mmapfile &/' > /www/conf/mmap.conf 147 </code></p></div> 148 </div> 149 </div> 150 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 151 <div class="directive-section"><h2><a name="CacheFile" id="CacheFile">CacheFile</a> <a name="cachefile" id="cachefile">Directive</a></h2> 152 <table class="directive"> 153 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Cache a list of file handles at startup time</td></tr> 154 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>CacheFile <var>file-path</var> [<var>file-path</var>] ...</code></td></tr> 155 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 156 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Experimental</td></tr> 157 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_file_cache</td></tr> 158 </table> 159 <p>The <code class="directive">CacheFile</code> directive opens handles to 160 one or more files (given as whitespace separated arguments) and 161 places these handles into the cache at server startup 162 time. Handles to cached files are automatically closed on a server 163 shutdown. When the files have changed on the filesystem, the 164 server should be restarted to re-cache them.</p> 165 166 <p>Be careful with the <var>file-path</var> arguments: They have 167 to literally match the filesystem path Apache's URL-to-filename 168 translation handlers create. We cannot compare inodes or other 169 stuff to match paths through symbolic links <em>etc.</em> 170 because that again would cost extra <code>stat()</code> system 171 calls which is not acceptable. This module may or may not work 172 with filenames rewritten by <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> or 173 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p> 174 175 <div class="example"><h3>Example</h3><p><code> 176 CacheFile /usr/local/apache/htdocs/index.html 177 </code></p></div> 178 179 </div> 180 <div class="top"><a href="#page-header"><img alt="top" src="../images/up.gif" /></a></div> 181 <div class="directive-section"><h2><a name="MMapFile" id="MMapFile">MMapFile</a> <a name="mmapfile" id="mmapfile">Directive</a></h2> 182 <table class="directive"> 183 <tr><th><a href="directive-dict.html#Description">Description:</a></th><td>Map a list of files into memory at startup time</td></tr> 184 <tr><th><a href="directive-dict.html#Syntax">Syntax:</a></th><td><code>MMapFile <var>file-path</var> [<var>file-path</var>] ...</code></td></tr> 185 <tr><th><a href="directive-dict.html#Context">Context:</a></th><td>server config</td></tr> 186 <tr><th><a href="directive-dict.html#Status">Status:</a></th><td>Experimental</td></tr> 187 <tr><th><a href="directive-dict.html#Module">Module:</a></th><td>mod_file_cache</td></tr> 188 </table> 189 <p>The <code class="directive">MMapFile</code> directive maps one or more files 190 (given as whitespace separated arguments) into memory at server 191 startup time. They are automatically unmapped on a server 192 shutdown. When the files have changed on the filesystem at 193 least a <code>HUP</code> or <code>USR1</code> signal should be send to 194 the server to re-<code>mmap()</code> them.</p> 195 196 <p>Be careful with the <var>file-path</var> arguments: They have 197 to literally match the filesystem path Apache's URL-to-filename 198 translation handlers create. We cannot compare inodes or other 199 stuff to match paths through symbolic links <em>etc.</em> 200 because that again would cost extra <code>stat()</code> system 201 calls which is not acceptable. This module may or may not work 202 with filenames rewritten by <code class="module"><a href="../mod/mod_alias.html">mod_alias</a></code> or 203 <code class="module"><a href="../mod/mod_rewrite.html">mod_rewrite</a></code>.</p> 204 205 <div class="example"><h3>Example</h3><p><code> 206 MMapFile /usr/local/apache/htdocs/index.html 207 </code></p></div> 208 209 </div> 210 </div> 211 <div class="bottomlang"> 212 <p><span>Available Languages: </span><a href="../en/mod/mod_file_cache.html" title="English"> en </a> | 213 <a href="../ko/mod/mod_file_cache.html" hreflang="ko" rel="alternate" title="Korean"> ko </a></p> 214 </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&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> 215 <script type="text/javascript"><!--//--><![CDATA[//><!-- 216 var comments_shortname = 'httpd'; 217 var comments_identifier = 'http://httpd.apache.org/docs/2.2/mod/mod_file_cache.html'; 218 (function(w, d) { 219 if (w.location.hostname.toLowerCase() == "httpd.apache.org") { 220 d.write('<div id="comments_thread"><\/div>'); 221 var s = d.createElement('script'); 222 s.type = 'text/javascript'; 223 s.async = true; 224 s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier; 225 (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s); 226 } 227 else { 228 d.write('<div id="comments_thread">Comments are disabled for this page at the moment.<\/div>'); 229 } 230 })(window, document); 231 //--><!]]></script></div><div id="footer"> 232 <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> 233 <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[//><!-- 234 if (typeof(prettyPrint) !== 'undefined') { 235 prettyPrint(); 236 } 237 //--><!]]></script> 238 </body></html>