mod_cache.xml revision 7db9f691a00ead175b03335457ca296a33ddf31b
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<!DOCTYPE modulesynopsis SYSTEM "/style/modulesynopsis.dtd">
e942c741056732f50da2074b36fe59805d370650slive<?xml-stylesheet type="text/xsl" href="/style/manual.en.xsl"?>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard<description>Content cache keyed to URIs.</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end This module is experimental. Documentation is still under development...
15f37a157fbbf107658ed82ec30c348a9b6e518end href="http://www.ietf.org/rfc/rfc2616.txt">RFC 2616</a> compliant HTTP
15f37a157fbbf107658ed82ec30c348a9b6e518end content cache that can be used to cache either local or proxied content.
15f37a157fbbf107658ed82ec30c348a9b6e518end <module>mod_cache</module> requires the services of one or more storage
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard management modules. Two storage management modules are included in
3e5f26422e7931e8838f3c844adc4282ef269cdfstoddard the base Apache distribution:</p>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <dd>implements a memory based storage manager.
15f37a157fbbf107658ed82ec30c348a9b6e518end <module>mod_mem_cache</module> can be configured to operate in two
15f37a157fbbf107658ed82ec30c348a9b6e518end modes: caching open file descriptors or caching objects in heap storage.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <module>mod_mem_cache</module> can be used to cache locally generated content
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj or to cache backend server content for <module>mod_proxy</module> when
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj configured using <directive module="mod_proxy">ProxyPass</directive>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>Content is stored in and retrieved from the cache using URI based keys. Content with
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj access protection is not cached.</p>
88c775368960b64afcdfd93a812f466a109746baerikabele<section id="related"><title>Related Modules and Directives</title>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <modulelist>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard </modulelist>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directivelist>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheRoot</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheSize</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheGcInterval</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheDirLevels</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheDirLength</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheExpiryCheck</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheMinFileSize</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheMaxFileSize</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheTimeMargin</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheGcDaily</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheGcUnused</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheGcClean</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_disk_cache">CacheGcMemUsage</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_mem_cache">MCacheSize</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_mem_cache">MCacheMaxObjectCount</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_mem_cache">MCacheMinObjectSize</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_mem_cache">MCacheMaxObjectSize</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard <directive module="mod_mem_cache">MCacheRemovalAlgorithm</directive>
d860c376b575fdd8b315452b603b972657776365stoddard <directive module="mod_mem_cache">MCacheMaxStreamingBuffer</directive>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard </directivelist>
15f37a157fbbf107658ed82ec30c348a9b6e518end<section id="sampleconf"><title>Sample Configuration</title>
15f37a157fbbf107658ed82ec30c348a9b6e518end # Sample Cache Configuration<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end #LoadModule disk_cache_module modules/mod_disk_cache.so<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheRoot c:/cacheroot<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheSize 256<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheEnable disk /<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheDirLevels 5<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheDirLength 3<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end </IfModule> <br />
15f37a157fbbf107658ed82ec30c348a9b6e518end LoadModule mem_cache_module modules/mod_mem_cache.so<br />
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj CacheEnable mem /<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end MCacheSize 4096<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end MCacheMaxObjectCount 100<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end MCacheMinObjectSize 1<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end MCacheMaxObjectSize 2048<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end </IfModule><br />
15f37a157fbbf107658ed82ec30c348a9b6e518end </IfModule>
15f37a157fbbf107658ed82ec30c348a9b6e518end </example>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>Enable caching of specified URLs using a specified storage
15f37a157fbbf107658ed82ec30c348a9b6e518endmanager</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<syntax>CacheEnable <var>cache_type</var> <var>url-string</var></syntax>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard <p>The <directive>CacheEnable</directive> directive instructs
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <var>url-string</var>. The cache storage manager is specified with the
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <var>cache_type</var> argument. <var>cache_type</var> <code> mem</code>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj instructs <module>mod_cache</module> to use the memory based storage
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj manager implemented by <module>mod_mem_cache</module>.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <module>mod_cache</module> to use the disk based storage manager
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <module>mod_cache</module> to use the file descriptor cache implemented
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>In the event that the URL space overlaps between different
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <directive>CacheEnable</directive> directives (as in the example below),
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj each possible storage manager will be run until the first one that
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj actually processes the request. The order in which the storage managers are
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj run is determined by the order of the <directive>CacheEnable</directive>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj directives in the configuration file.</p>
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheEnable mem /manual<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheEnable fd /images<br />
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj CacheEnable disk /<br />
15f37a157fbbf107658ed82ec30c348a9b6e518end </example>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>Disable caching of specified URLs</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard <p>The <directive>CacheDisable</directive> directive instructs
15f37a157fbbf107658ed82ec30c348a9b6e518end <module>mod_cache</module> to <em>not</em> cache urls at or below
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj CacheDisable /local_files
15f37a157fbbf107658ed82ec30c348a9b6e518end </example>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<description>The maximum time in seconds to cache a document</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>The <directive>CacheMaxExpire</directive> directive specifies the maximum number of
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj seconds for which cachable HTTP documents will be retained without checking the origin
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj server. Thus, documents will be out of date at most this number of seconds. This maximum
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj value is enforced even if an expiry date was supplied with the document.</p>
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheMaxExpire 604800
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>The default duration to cache a document when no expiry date is specified.</description>
88c775368960b64afcdfd93a812f466a109746baerikabele<default>CacheDefaultExpire 3600 (one hour)</default>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>The <directive>CacheDefaultExpire</directive> directive specifies a default time,
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj in seconds, to cache a document if neither an expiry date nor last-modified date are provided
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj with the document. The value specified with the <directive>CacheMaxExpire</directive>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj directive does <em>not</em> override this setting.</p>
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheDefaultExpire 86400
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>Ignore the fact that a response has no Last Modified
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpjheader.</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>Ordinarily, documents without a last-modified date are not cached.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj Under some circumstances the last-modified date is removed (during
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <module>mod_include</module> processing for example) or not provided
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj at all. The <directive>CacheIgnoreNoLastMod</directive> directive
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj provides a way to specify that documents without last-modified dates
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj should be considered for caching, even without a last-modified date.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj If neither a last-modified date nor an expiry date are provided with
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj the document then the value specified by the
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <directive>CacheDefaultExpire</directive> directive will be used to
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj generate an expiration date.</p>
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheIgnoreNoLastMod On
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>Ignore the fact that the client requested the content not be
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpjcached.</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>Ordinarily, documents with no-cache or no-store header values will not be stored in the cache.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj The <directive>CacheIgnoreCacheControl</directive> directive allows this behavior to be overridden.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <directive>CacheIgnoreCacheControl</directive> On tells the server to attempt to cache the document
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj even if it contains no-cache or no-store header values. Documents requiring authorization will
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheIgnoreCacheControl On
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>The factor used to compute an expiry date based on the
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpjLastModified date.</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>In the event that a document does not provide an expiry date but does
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj provide a last-modified date, an expiry date can be calculated based on
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj the time since the document was last modified. The
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <directive>CacheLastModifiedFactor</directive> directive specifies a
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <var>factor</var> to be used in the generation of this expiry date
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj according to the following formula:
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <code>expiry-period = time-since-last-modified-date * <var>factor</var>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj expiry-date = current-date + expiry-period</code>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj For example, if the document was last modified 10 hours ago, and
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <var>factor</var> is 0.1 then the expiry-period will be set to
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj 10*0.1 = 1 hour. If the current time was 3:00pm then the computed
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj expiry-date would be 3:00pm + 1hour = 4:00pm.
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj If the expiry-period would be longer than that set by
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <directive>CacheMaxExpire</directive>, then the latter takes
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj precedence.</p>
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheLastModifiedFactor 0.5
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</directivesynopsis>
1e5b300cc68389a18fe3762b1b980b0c86712ba1stoddard<directivesynopsis>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj<description>Percentage of document served, after which the server
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpjwill complete caching the file even if the request is cancelled.</description>
15f37a157fbbf107658ed82ec30c348a9b6e518end<syntax>CacheForceCompletion <var>Percentage</var></syntax>
15f37a157fbbf107658ed82ec30c348a9b6e518end<contextlist><context>server config</context><context>virtual host</context>
15f37a157fbbf107658ed82ec30c348a9b6e518end</contextlist>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>Ordinarily, if a request is cancelled while the response is being
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj cached and delivered to the client the processing of the response will
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj stop and the cache entry will be removed. The
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <directive>CacheForceCompletion</directive> directive specifies a
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj threshold beyond which the document will continue to be cached to
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj completion, even if the request is cancelled.</p>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <p>The threshold is a percentage specified as a value between
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj <code>1</code> and <code>100</code>. A value of <code>0</code>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj specifies that the default be used. A value of <code>100</code>
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj will only cache documents that are served in their entirety. A value
62e52789bfc10a5fd0a433af77e77c8ebbbed6c2rederpj between 60 and 90 is recommended.</p>
15f37a157fbbf107658ed82ec30c348a9b6e518end CacheForceCompletion 80
5d1b3dcc11d17d2a508d9836e4b1787c65a8d789erikabele</directivesynopsis>
721fdd19e2abef2e8dc46eb5c022ef14efe3367estoddard</modulesynopsis>