| <?xml version="1.0"?> |
| <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd"> |
| <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?> |
| <modulesynopsis> |
| |
| <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> |