🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# Apache模块 mod_mem_cache | [说明](#calibre_link-11) | 基于内存的缓冲管理器 | | --- | --- | | [状态](#calibre_link-12) | 扩展(E) | | [模块名](#calibre_link-13) | mem_cache_module | | [源文件](#calibre_link-14) | mod_mem_cache.c | ### 概述 本模块需要`mod_cache`提供的服务。它作为`mod_cache`的辅助模块工作,以提供基于内存的存储管理。`mod_mem_cache`模块可以按两种方法来配置:缓存打开的文件描述符,或缓存堆中的对象。`mod_mem_cache`大多数情况下用于缓存本地生成的内容,或是在`mod_proxy`配置成`ProxyPass`方式(也就是<dfn class="calibre27">反向代理</dfn>)时后端服务器产生的内容。 被缓存的内容通过基于URI的键被保存到缓冲区或从缓冲区取出。带访问保护的内容不会被缓存。 ## MCacheMaxObjectCount 指令 | [说明](#calibre_link-18) | 最大缓存对象数 | | --- | --- | | [语法](#calibre_link-19) | `MCacheMaxObjectCount value` | | [默认值](#calibre_link-24) | `MCacheMaxObjectCount 1009` | | [作用域](#calibre_link-20) | server config | | [状态](#calibre_link-21) | 扩展(E) | | [模块](#calibre_link-22) | mod_mem_cache | `MCacheMaxObjectCount`指令设定最大缓存对象数。这个值用来生成开放哈希表。如果一个新的对象要被插入缓存,而此时缓存的最大缓存对象数已达到极限,原来缓存的某个对象会被移走以允许新对象插入缓存。具体哪个对象被移走,是通过`MCacheRemovalAlgorithm`指令指定的算法来确定的。 ### 示例 ``` MCacheMaxObjectCount 13001 ``` ## MCacheMaxObjectSize 指令 | [说明](#calibre_link-18) | 缓存允许的最大文档大小(字节) | | --- | --- | | [语法](#calibre_link-19) | `MCacheMaxObjectSize bytes` | | [默认值](#calibre_link-24) | `MCacheMaxObjectSize 10000` | | [作用域](#calibre_link-20) | server config | | [状态](#calibre_link-21) | 扩展(E) | | [模块](#calibre_link-22) | mod_mem_cache | `MCacheMaxObjectSize`指令设定允许缓存的最大文档大小(以Byte为单位)。 ### 示例 ``` MCacheMaxObjectSize 6400000 ``` ### 注意 `MCacheMaxObjectSize`的值必须大于`MCacheMinObjectSize`的值。 ## MCacheMaxStreamingBuffer 指令 | [说明](#calibre_link-18) | 内存中允许缓冲的最大流式响应字节长度 | | --- | --- | | [语法](#calibre_link-19) | `MCacheMaxStreamingBuffer size_in_bytes` | | [默认值](#calibre_link-24) | `MCacheMaxStreamingBuffer 100000与MCacheMaxObjectSize中的小者` | | [作用域](#calibre_link-20) | server config | | [状态](#calibre_link-21) | 扩展(E) | | [模块](#calibre_link-22) | mod_mem_cache | `MCacheMaxStreamingBuffer`内存中允许缓冲的最大流式响应字节长度,以决定这个流式响应是否太长而不能被缓存。流式响应是指整个响应内容无法完整地得到,并且`Content-Length`也末知的响应。流式响应的来源包括代理的响应内容和CGI脚本的输出。默认情况下,除非响应头包含`Content-Length`信息,否则流式响应_不会_被缓存。这样做是为了避免使用大量内存缓存那些最终因为太长而不能缓存的响应。而`MCacheMaxStreamingBuffer`指令允许缓存不含`Content-Length`的流式响应,直到达到其指定的值。如果达到了最大流式响应可缓冲长度,已经被缓存的内容将会被释放,缓存也不再继续。 ### 注意: 对`MCacheMaxStreamingBuffer`使用一个非零值不会对响应传送到客户产生延迟。当`mod_mem_cache`模块将流式化的内容复制到缓冲区的同时会将数据块传送到下一个输入点以传送给客户端。 ``` # 指定最大流式响应可缓冲长度为 64KB MCacheMaxStreamingBuffer 65536 ``` ## MCacheMinObjectSize 指令 | [说明](#calibre_link-18) | 允许缓存的最小文档大小(字节) | | --- | --- | | [语法](#calibre_link-19) | `MCacheMinObjectSize bytes` | | [默认值](#calibre_link-24) | `MCacheMinObjectSize 0` | | [作用域](#calibre_link-20) | server config | | [状态](#calibre_link-21) | 扩展(E) | | [模块](#calibre_link-22) | mod_mem_cache | `MCacheMinObjectSize`指令设定允许缓存的最小文档大小。 ### 示例 ``` MCacheMinObjectSize 10000 ``` ## MCacheRemovalAlgorithm 指令 | [说明](#calibre_link-18) | 定义在需要时哪个文档被移出缓存的算法 | | --- | --- | | [语法](#calibre_link-19) | `MCacheRemovalAlgorithm LRU|GDSF` | | [默认值](#calibre_link-24) | `MCacheRemovalAlgorithm GDSF` | | [作用域](#calibre_link-20) | server config | | [状态](#calibre_link-21) | 扩展(E) | | [模块](#calibre_link-22) | mod_mem_cache | `MCacheRemovalAlgorithm`指令定义在需要时哪个文档被移出缓存。可以有两种选择: `LRU` (最近最少使用) `LRU` 指定最长时间没有用到的对象将在必要的时候移出缓存。 `GDSF` (GreadyDual-Size) `GDSF` 基于缓存命中率和文档大小计算优先级。在必要时,优先级最低的文档被移出缓存。 ### 示例 ``` MCacheRemovalAlgorithm GDSF MCacheRemovalAlgorithm LRU ``` ## MCacheSize 指令 | [说明](#calibre_link-18) | 缓存允许使用的最大内存量,以KB为单位 | | --- | --- | | [语法](#calibre_link-19) | `MCacheSize KBytes` | | [默认值](#calibre_link-24) | `MCacheSize 100` | | [作用域](#calibre_link-20) | server config | | [状态](#calibre_link-21) | 扩展(E) | | [模块](#calibre_link-22) | mod_mem_cache | `MCacheSize`指令设定缓存允许使用的最大内存量,以KB(1024-byte)为单位。如果一个新的比缓存剩余内存量大的对象要插入缓存,那么原来缓存内的对象会被移走,直到这个新的对象能被插入缓冲区。具体哪个对象被移走,是通过`MCacheRemovalAlgorithm`指令指定的算法来确定的。 ### 示例 ``` MCacheSize 700000 ``` ### 注意 `MCacheSize`的值必须比`MCacheMaxObjectSize`的值大。