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