在apache中是支持一个mod_cache模板的,只有打开mod_cache模块之后我们才可以使用apache缓存,mod_cache开启后可使用两种缓存方式,一种是基于硬盘文件的缓存(mod_disk_cache ),另一种是基于内存的缓存(mod_mem_cache ),下面我来给大家介绍。
默认情况下,apache安装完以后,是不允许被cache的。如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块
以下简单介绍一下安装与配置的步骤:
1. apache版本:httpd-2.0.49.tar.gz
2. 安装httpd-2.0.49.tar.gz:
- # tar –zxvf httpd-2.0.49.tar.gz
- # cd httpd-2.0.49
- #./configure --enable-cache --enable-disk-cache --enable-mem-cache
- #mke
- #make install
3. 检验是否安装了cache模块
- /usr/local/apache2/bin/apachectl –l
如果有mod_cache.c
- mod_disk_cache.c
- mod_mem_cache.c
这3个模块,说明该apache可以支持cache了
4.更改httpd.conf的设置
- vi /usr/local/apache2/conf/httpd.conf
在末尾添加上:
- CacheForceCompletion 100
- CacheDefaultExpire 3600
- CacheMaxExpire 86400
- CacheLastModifiedFactor 0.1
5.设置虚拟目录
然后保存退出。启动apache
1、基于硬盘文件的缓存
基于硬盘文件存储的缓存由 mod_disk_cache 模块实现,先看个简单的配置例子:
- <IfModule mod_cache.c>
- CacheDefaultExpire 86400
- <IfModule mod_disk_cache.c>
- CacheEnable disk /
- CacheRoot /tmp/apacheCache
- CacheDirLevels 5
- CacheDirLength 5
- CacheMaxFileSize 1048576
- CacheMinFileSize 10
- </IfModule>
- </IfModule>
把上面的配置加到 Apache 的 httpd.conf 文件中,如果缓存相关的模块都已经编译进了 Apache 的核心,则无需加载模块,直接就能使用上面的指令。指令的详细说明如下:
CacheDefaultExpire:设定缓存过期的时间(秒),默认是1小时,只有当缓存的文档没有设置过期时间或最后修改时间时这个指令才会生效
CacheEnable:启用缓存,第1个参数是缓存类弄,这里当然是 disk了,第2个参数是缓存路径,指的是 url 路径,这里是缓存所有的东西,直接写上“/”即可,如“/docs”则只缓存 /docs 下的所有文件
CacheRoot:缓存文件所在的目录,运行 Apache 的用户(如daemon 或 nobody)要能对其进行读写,如果不清楚的话可以直接设置成 777,请手动建立该目录并设置好访问权限
CacheDirLevels:缓存目录的深度,默认是3,这里设置为5
CacheDirLength:缓存目录名的字符长度,默认是4,这里设置为5
CacheMaxFileSize 和 CacheMaxFileSize:缓存文件的最大值和最小值(byte),当超过这个范围时将不再缓存,这里设置为 1M 和 10bytes
基于硬盘文件存储的文件基本上就这些内容,设置好后重启 Apache 应该就能使用了。一切正常的话,可以在缓存目录下看到 Apache 自动建立的一些目录和缓存的数据文件。
2、基于内存的缓存
基于内存的缓存主要由 mod_mem_cache 模块实现,还是看个简单的配置吧,这样比较直观:-)
- <IfModule mod_cache.c>
- <IfModule mod_mem_cache.c>
- CacheEnable mem /
- MCacheMaxObjectCount 20000
- MCacheMaxObjectSize 1048576
- MCacheMaxStreamingBuffer 65536
- MCacheMinObjectSize 10
- MCacheRemovalAlgorithm GDSF
- MCacheSize 131072
- </IfModule>
- </IfModule>
简单说一下上面一些指令的意思:
CacheEnable:启用缓存,使用基于内存的方式存储
MCacheMaxObjectCount:在内存中最多能存储缓存对象的个数,默认是1009,这里设置为20000
MCacheMaxObjectSize:单个缓存对象最大为 1M,默认是10000bytes
MCacheMaxStreamingBuffer:在缓冲区最多能够放置多少的将要被缓存对象的尺寸,这里设置为 65536,该值通常小于100000或 MCacheMaxObjectSize 设置的值
MCacheMinObjectSize:单个缓存对象最小为10bytes,默认为1bytes
MCacheRemovalAlgorithm:清除缓存所使用的算法,默认是 GDSF,还有一个是LRU,可以查一下 Apache 的官方文档,上面有些介绍
MCacheSize:缓存数据最多能使用的内存,单位是 kb,默认是100kb,这里设置为128M
保存重启 Apache 基于内存的缓存系统应该就能生效了,根据需要可以使基于内存的存储或硬盘文件的存储方式一起使用,只要指明不同的URL路径即可。 |