apache中mod_cache mod_disk_cache

1. /usr/local/apache/bin/httpd -k graceful
httpd: Syntax error on line 56 of /usr/local/apache/conf/httpd.conf: Cannot load /usr/local/apache/modules/mod_cache.so into server: /usr/local/apache/modules/mod_cache.so: undefined symbol: cache_generate_key_default
解决方法:
加入缓存支持的父模块mod_cache.c,该文件必须和cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c一起编译
/usr/local/apache/bin/apxs -i -c ./mod_cache.c cache_util.c cache_cache.c cache_storage.c cache_pqueue.c cache_hash.c


2. CacheDirLevels*CacheDirLength value must not be higher than 20
解决办法:
CacheDirLevels最大值为:5
CacheDirLength最大值为:4
二者的乘积最大不能超过20

以上两个问题是在安装mod_cache,mod_disk_cache扩展并配置了httpd.conf重启apache后报出的错误。


浏览器的刷新有以下三种情况:
1. 强制刷新: windows快捷键(control+shift+F5) mac快捷键(command+shift+R)
此操作在刷新页面时,不会走本地缓存而是每次都会直接向web服务器发送请求。

2. F5或者转到按钮: windows快捷键(F5) mac快捷键(command+R)
此操作在刷新页面时,会发送上次的last-modified到web服务器,服务器端获取if-since-modified来判断文件在某时间内是否
修改过或过期,如果修改过或者过期了则返回新内容,否则返回http头, HTTP/1.1 304 Not Modified。

3. 地址栏输入地址回车或者超链接跳转:
此操作刷新页面时,如果页面头中包含Expires过期时间, 如果页面未过期,则直接使用本地缓存,不会再向web服务器发送请求,否则
则会再次向web服务器发送请求。


针对mod_cache模块,其又提供了两种数据存储模块mod_dis_cache(存储至磁盘), mod_mem_cache(存储至内存)
本操作采用将缓存数据存储至磁盘。
1. httpd.conf配置如下:
LoadModule cache_module modules/mod_cache.so	//加载mod_cache.so模块
	
	CacheEnable disk /							//启用磁盘存储。参数1:存储类型disk or mem, 参数2:路径 /代表根目录下的所有文件
	CacheDefaultExpire 60						//缓存默认过期时间单位秒
	CacheIgnoreNoLastMod On						//忽略last-modified
	
	LoadModule disk_cache_module modules/mod_disk_cache.so	//加载mod_disk_cache模块
	
		CacheRoot /var/www/htdocs/caches		//缓存文件存储目录  指定的目录必须有写入权限
		CacheDirLevels 3						//创建的缓存目录级数
		CacheDirLength 2						//目录名字包含字符数
	


如1所示的mod_cache与mod_disk_cache配置,如果web服务器响应的页面中未提供last-modified或者expire,CacheDefaultExpire才会
生效。通常对于未提供last-modified的页面服务器不会缓存,所以此时需要忽略last-modified,因此需要设置CacheIgnoreNoLastMod为On
此时测试上面提到的三种刷新机制:(假定页面的缓存文件已经生成)
1. 强制刷新							每次都会向web服务器发送请求
2. F5或者转到按钮						每次都会向web服务器发送请求
3. 地址栏输入地址回车或者超链接跳转	如果未过期则使用本地缓存


2. httpd.conf配置如下:
LoadModule cache_module modules/mod_cache.so	//加载mod_cache.so模块
	
	CacheEnable disk /							//启用磁盘存储。参数1:存储类型disk or mem, 参数2:路径 /代表根目录下的所有文件

	LoadModule disk_cache_module modules/mod_disk_cache.so	//加载mod_disk_cache模块
	
		CacheRoot /var/www/htdocs/caches		//缓存文件存储目录  指定的目录必须有写入权限
		CacheDirLevels 3						//创建的缓存目录级数
		CacheDirLength 2						//目录名字包含字符数
	

如2所示的mod_cache与mod_disk_cache配置, 此情况需要在web程序中设置响应头信息如:

此时测试上面提到的三种刷新机制:(假定页面的缓存文件已经生成)
1. 强制刷新							每次都会向web服务器发送请求
2. F5或者转到按钮						向服务器发送请求头last-modified,如果未过期则使用本地缓存
3. 地址栏输入地址回车或者超链接跳转	如果未过期则使用本地缓存

注:firefox与chrome查看缓存,需在浏览器输入about:cache


对于apache中的cache请参考官网:
http://httpd.apache.org/docs/2.2/caching.html
http://httpd.apache.org/docs/2.2/mod/mod_cache.html
http://httpd.apache.org/docs/2.2/mod/mod_disk_cache.html


对于mod_disk_cache,如果disk中的缓存文件过大,需要定期清除disk中的文件,此时可以使用htcacheclean
具体请参考官网:http://httpd.apache.org/docs/2.2/programs/htcacheclean.html

你可能感兴趣的:(Apache,LINUX,PHP)