<?xml version="1.0"?> <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> <modulesynopsis metafile="mod_mem_cache.xml.meta"> <name>mod_mem_cache</name> <description>Content cache keyed to URIs</description> <status>Experimental</status> <sourcefile>mod_mem_cache.c</sourcefile> <identifier>mem_cache_module</identifier> <summary> <note type="warning"> This module is experimental. Documentation is still under development... </note> <p>This module <em>requires</em> the service of <module >mod_cache</module>. It acts as a support module for <module >mod_cache</module> and provides a memory based storage manager. <module>mod_mem_cache</module> can be configured to operate in two modes: caching open file descriptors or caching objects in heap storage. <module>mod_mem_cache</module> is most useful when used to cache locally generated content or to cache backend server content for <module >mod_proxy</module> configured for <directive module="mod_proxy" >ProxyPass</directive> (aka <dfn>reverse proxy</dfn>).</p> <p>Content is stored in and retrieved from the cache using URI based keys. Content with access protection is not cached.</p> </summary> <seealso><module>mod_cache</module></seealso> <seealso><module>mod_disk_cache</module></seealso> <directivesynopsis> <name>MCacheSize</name> <description>The maximum amount of memory used by the cache in KBytes</description> <syntax>MCacheSize <var>KBytes</var></syntax> <default>MCacheSize 100</default> <contextlist><context>server config</context></contextlist> <usage> <p>The <directive>MCacheSize</directive> directive sets the maximum amount of memory to be used by the cache, in KBytes (1024-byte units). If a new object needs to be inserted in the cache and the size of the object is greater than the remaining memory, objects will be removed until the new object can be cached. The object to be removed is selected using the algorithm specified by <directive module="mod_mem_cache">MCacheRemovalAlgorithm</directive>.</p> <example><title>Example</title> MCacheSize 700000 </example> <note><title>Note</title> <p>The <directive>MCacheSize</directive> value must be greater than the value specified by the <directive module="mod_mem_cache" >MCacheMaxObjectSize</directive> directive.</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheMaxObjectCount</name> <description>The maximum number of objects allowed to be placed in the cache</description> <syntax>MCacheMaxObjectCount <var>value</var></syntax> <default>MCacheMaxObjectCount 1009</default> <contextlist><context>server config</context></contextlist> <usage> <p>The <directive>MCacheMaxObjectCount</directive> directive sets the maximum number of objects to be cached. The value is used to create the open hash table. If a new object needs to be inserted in the cache and the maximum number of objects has been reached, an object will be removed to allow the new object to be cached. The object to be removed is selected using the algorithm specified by <directive module="mod_mem_cache">MCacheRemovalAlgorithm</directive>.</p> <example><title>Example</title> MCacheMaxObjectCount 13001 </example> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheMinObjectSize</name> <description>The minimum size (in bytes) of a document to be allowed in the cache</description> <syntax>MCacheMinObjectSize <var>bytes</var></syntax> <default>MCacheMinObjectSize 0</default> <contextlist><context>server config</context></contextlist> <usage> <p>The <directive>MCacheMinObjectSize</directive> directive sets the minimum size in bytes of a document for it to be considered cacheable.</p> <example><title>Example</title> MCacheMinObjectSize 10000 </example> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheMaxObjectSize</name> <description>The maximum size (in bytes) of a document allowed in the cache</description> <syntax>MCacheMaxObjectSize <var>bytes</var></syntax> <default>MCacheMaxObjectSize 10000</default> <contextlist><context>server config</context></contextlist> <usage> <p>The <directive>MCacheMaxObjectSize</directive> directive sets the maximum allowable size, in bytes, of a document for it to be considered cacheable.</p> <example><title>Example</title> MCacheMaxObjectSize 6400000 </example> <note><title>Note</title> <p>The value of <directive>MCacheMaxObjectSize</directive> must be greater than the value specified by the <directive module="mod_mem_cache">MCacheMinObjectSize</directive> directive.</p> </note> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheRemovalAlgorithm</name> <description>The algorithm used to select documents for removal from the cache</description> <syntax>MCacheRemovalAlgorithm LRU|GDSF</syntax> <default>MCacheRemovalAlgorithm GDSF</default> <contextlist><context>server config</context></contextlist> <usage> <p>The <directive>MCacheRemovalAlgorithm</directive> directive specifies the algorithm used to select documents for removal from the cache. Two choices are available:</p> <dl> <dt><code>LRU</code> (Least Recently Used)</dt> <dd><code>LRU</code> removes the documents that have not been accessed for the longest time.</dd> <dt><code>GDSF</code> (GreadyDual-Size)</dt> <dd><code>GDSF</code> assigns a priority to cached documents based on the cost of a cache miss and the size of the document. Documents with the lowest priority are removed first.</dd> </dl> <example><title>Example</title> MCacheRemovalAlgorithm GDSF<br /> MCacheRemovalAlgorithm LRU </example> </usage> </directivesynopsis> <directivesynopsis> <name>MCacheMaxStreamingBuffer</name> <description>Maximum amount of a streamed response to buffer in memory before declaring the response uncacheable</description> <syntax>MCacheMaxStreamingBuffer <var>size_in_bytes</var></syntax> <default>MCacheMaxStreamingBuffer the smaller of 100000 or MCacheMaxObjectSize</default> <contextlist><context>server config</context> </contextlist> <usage> <p>The <directive>MCacheMaxStreamingBuffer</directive> directive specifies the maximum number of bytes of a streamed response to buffer before deciding that the response is too big to cache. A streamed response is one in which the entire content is not immediately available and in which the <code>Content-Length</code> may not be known. Sources of streaming responses include proxied responses and the output of CGI scripts. By default, a streamed response will <em>not</em> be cached unless it has a <code>Content-Length</code> header. The reason for this is to avoid using a large amount of memory to buffer a partial response that might end up being too large to fit in the cache. The <directive>MCacheMaxStreamingBuffer</directive> directive allows buffering of streamed responses that don't contain a <code>Content-Length</code> up to the specified maximum amount of space. If the maximum buffer space is reached, the buffered content is discarded and the attempt to cache is abandoned.</p> <note><title>Note:</title> <p>Using a nonzero value for <directive>MCacheMaxStreamingBuffer</directive> will not delay the transmission of the response to the client. As soon as <module>mod_mem_cache</module> copies a block of streamed content into a buffer, it sends the block on to the next output filter for delivery to the client.</p> </note> <example> # Enable caching of streamed responses up to 64KB:<br /> MCacheMaxStreamingBuffer 65536 </example> </usage> </directivesynopsis> </modulesynopsis>