Apache Cache编译安装以及详细介绍及问题处理

apache编译安装的时候没有启用cache功能,默认情况下,apache安装完以后,是不允许被cache的。访问量大增,需要cache功能,重新编译:

[-]#/usr/local/apache2/bin/apxs -cia mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c
和mod_disk_cache.cmod_mem_cache.c会在/usr/local/apache2/modules下自动生成mod_cache.so,mod_disk_cache.so和mod_mem_cache.so
httpd.conf配置以及详解如下
LoadModule cache_module modules/mod_cache.soLoadModule disk_cache_module modules/mod_disk_cache.soLoadModule mem_cache_module modules/mod_mem_cache.so
<IfModule mod_cache.c>CacheForceCompletion 100CacheDefaultEXPire 3600CacheMaxExpire 86400CacheLastModifiedFactor 0.1
<IfModule mod_disk_cache.c>CacheEnable disk /CacheRoot “/var/cache/mod_proxy”CacheSize 327680CacheDirLength 4CacheDirLevels 5CacheGcInterval 4</IfModule><IfModule mod_mem_cache.c>CacheEnable mem /MCacheSize 8192MCacheMaxObjectCount 10000MCacheMinObjectSize 1MCacheMaxObjectSize 51200</IfModule></IfModule>

####################################################参考数据mod_cache: CacheEnable: 启动 mod_cache,其后接两个参数。第一个参数指定快取的种类,应设为 mem (内存快取) 或 disk (磁盘高速缓存) 之其一;第二个参数指定使用快取的 URI 路径,如果对整个网XP (或虚拟主机) 进行快取,简单指定为根目录(/) 即可。 CacheForceCompletion: 这个值指定当 HTTP request 被取消时,内容的产生动作要完成的百分比;预设是 60(%)。CacheDefaultExpire: 指定快取的预设过期秒数;默认值是一小时 (3600)。 CacheMaxExpire: 指定快取最大的过期秒数;默认值是一天 (86400)。 CacheLastModifiedFactor: 用来从响应里 Last Modified 信息算出 expir date。计算方式是:expire period (过期时距) = 最后更新后至今的时间间距 *CacheLastModifiedFactor而expire date = 目前时间 + expire period不过无论如何,过期时间不能超过 CacheMaxExpire 的设定值。
mod_disk_cache: CacheRoot: 指定磁盘高速缓存所使用的目录。CacheSize: 以 KByte 为单位指定快取使用的磁盘空间大小。CacheDirLength: 指定各目录 (的键值) 存在于快取阶层 (hierarchy) 中所使用的字符数。CacheDirLevels: 指定快取的目录层数; CacheDirLength 与此 CacheDirLevels设定值相乘不能超过 20。CacheGcInterval: 指定收垃圾 (Garbage Collection) 的动作间隔时间;单位是小时。不过根据 Apache2 文件,这个指令还 没有被实作 。mod_mem_cache: MCacheSize: 以 KByte 为单位指定快取使用的内存空间大小。MCacheMaxObjectCount: 指定快取对象数目的最大值;默认值是 1009。MCacheMaxObjectSize: 指定最大可快取对象的大小,单位是 Byte;默认值是10000 (Bytes)。MCacheMinObjectSize: 指定最小可快取对象的大小,单位是 Byte;默认值是 0 (Bytes)。

配apache mod_cache 后 httpd -k start

apache出现以下信息:
Cannot load /usr/local/apache/modules/mod_cache.so into server: /usr/local/apache/modules/mod_cache.so: undefined symbol: cache_generate_key_default

正规解决方案:

modules/cache下面有很多的.c文件,大致用途如:
mod_cache.c 编译得到mod_cache.so 主要用来控制整个apache的cache功能。
mod_file_cache.c,mod_mem_cache.c,mod_disk_cache.c这个三个文件编译后得到各自的cache支持模块。
mod_cache.c还需要其他的程序来进行工作,包括cache_*.c这些文件。因此apxs动态加载一个模块的时候,需要把这些文件和mod_cache.c

一起编译:
CODE:

/usr/local/apache2/bin/apxs  -cia mod_cache.c cache_util.c cache_cache.c cache_storage.c  cache_pqueue.c cache_hash.c
netbox (2010-5-13 22:27:28)
[i=s] 本帖最后由 netbox 于 2010-5-13 22:55 编辑

补充:apache官方已经将mod_mem_cache从apache最新的文档的模块列表时清除掉了,根据apache社区的一些讨论,可能是mod_mem_cache的实现机制导致它在apache多进程模式下共享内存缓存的开销比较大。官方推荐使用mod_disk_cache来取代的mod_mem_cache.
CODE:

LoadModule cache_module       modules/mod_cache.so
LoadModule disk_cache_module modules/mod_disk_cache.so
CacheRoot /cache
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheMaxExpire 3600
CacheIgnoreHeaders Set-Cookie

从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的途径来加速原始web服务器(origin webserver)和代理服务器(proxy)的HTTP处理速度。

mod_cache以及它的支持模块mod_mem_cache和mod_disk_cache提供了智能的HTTP缓冲。内容(content)本身被存储在缓冲区中,mod_cache的目的在于管理控制内容缓冲能力的各种HTTP头和选项。它可以同时处理本地的内容和代理的内容。mod_cache被设计为同时针对简单的和复杂的缓冲配置,以用于处理代理的内容、动态的本地内容、必须加速访问的随时间而改变本地文件。

另一方面,mod_file_cache实现了一个更基本的、但是在某些情况下更有效的缓冲形式,它避免了主动确保URL缓冲能力所需的维护复杂性,mod_file_cache通过提供文件句柄(file-handle)和内存映射(memory-mapping)的技巧来维持一个自Apache最后一次启动以来的文件缓冲区。同样地,mod_file_cache的目标是改善不常修改的本地静态文件的访问时间。

由于mod_file_cache提供了一个相对简单的缓冲实现,除了CacheFile和MMapStatic文档的特定段落之外,这篇指南的说明覆盖了mod_cache的缓存体系结构。

为了更好的理解这篇文档,你应当熟悉HTTP的基础知识,并且已经阅读过从URL到文件系统的映射和内容协商这两篇用户指南。

从Apache2.2起,mod_cache和mod_file_cache将不再是试验模块,它们已经足够稳定,可以用于实际生产中了。这些缓冲体系提供了一个强有力的途径来加速原始web服务器(origin webserver)和代理服务器(proxy)的HTTP处理速度。

mod_cache以及它的支持模块mod_mem_cache和mod_disk_cache提供了智能的HTTP缓冲。内容(content)本身被存储在缓冲区中,mod_cache的目的在于管理控制内容缓冲能力的各种HTTP头和选项。它可以同时处理本地的内容和代理的内容。mod_cache被设计为同时针对简单的和复杂的缓冲配置,以用于处理代理的内容、动态的本地内容、必须加速访问的随时间而改变本地文件。

另一方面,mod_file_cache实现了一个更基本的、但是在某些情况下更有效的缓冲形式,它避免了主动确保URL缓冲能力所需的维护复杂性,mod_file_cache通过提供文件句柄(file-handle)和内存映射(memory-mapping)的技巧来维持一个自Apache最后一次启动以来的文件缓冲区。同样地,mod_file_cache的目标是改善不常修改的本地静态文件的访问时间。

由于mod_file_cache提供了一个相对简单的缓冲实现,除了CacheFile和MMapStatic文档的特定段落之外,这篇指南的说明覆盖了mod_cache的缓存体系结构。

为了更好的理解这篇文档,你应当熟悉HTTP的基础知识,并且已经阅读过从URL到文件系统的映射和内容协商这两篇用户指南。

摘取:http://www.itlearner.com/code/apache2.2/caching.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值