web缓存服务器位于server和client之间,当访问某url时,web缓存去请求server,下一个请求到达,若请求的是同一个url,web缓存服务器会直接返回内容给客户端,不再向server请求,降低了内容源server以及数据库的负载,减少网络延迟,提高了用户的访问响应速度,增强了用户体验
web缓存服务器最出名的是squid cache,现在新版的nginx指令proxy_cache支持了web缓存服务,新浪为nginx开发的ncache模块也可以支持web服务,解决了squid不能充分利用多核cpu的限制
nginx从0.7.48版本开始支持类似squid的缓存服务,它是把url及相关组合当做key,用md5算法对key进行hash,得到硬盘上对应的hash目录路径,从而将缓存内容保存在该目录内
proxy_chache相关指令集:
1 proxy_cache指令
语法 proxy_cache zone_name 默认none 使用环境server http location
作用:设置哪个缓存区将被使用
2 proxy_cache_path指令
语法 proxy_cache_path path [levels=num] keys_zone=zone_name:zone_size [inactive=time] [max_size=size] 默认none 使用环境 http
作用:用于设置缓存文件的存放路径
eg:proxy_cache_path /data0/proxy_cache_dir levels=1:2 keys_zone=chache_one:500m inactive=1d max_size=30g;
注:该指令只能用于http标签 levels指定该缓存有两层hash目录,第一层为1个字母,第二层为2个,保存的文件类似 /data0/proxy_cache_dir/c/29/sdsdsdvdhqwkeqejrewwereerewrrrrrrrrr
key_zone参数用来为这个缓存起名 500m指内存缓存空间大小为500MB
inactive的1d指的是如果缓存在1天内没有被访问就删除
max_size的30g指的是硬盘缓存空间为30G
3 proxy_cache_methods
语法 proxy_cache_methods [get post head]
默认值:proxy_cache_methods GET HAED;
使用环境:http server location
作用:用于设置缓存哪些http方法,默认缓存http get|head方法,不缓存post方法
4 proxy_cache_min_uses
语法:proxy_cache_min_uses the_number
默认值:proxy_cache_min_uses 1
使用环境:http server location
作用:用于设置缓存的最小使用次数
5 proxy_cache_valid
语法:proxy_cache_valid code [code ....] time
默认值:none
使用环境:http server location
作用:用于对不同返回码的url设置不同的缓存时间
proxy_cache_valid 200 302 10m;
proxy_cache_valid 404 1m;
表示设置200 302返回码缓存时间为10min 404缓存1min
6 proxy_cache_key
语法:proxy_cache_key line
默认值:none
使用环境:http server location
作用:设置web缓存的key值,nginx会根据key进行md5哈希存储缓存,一般根据$host(域名) $request_uri(请求路径) 等变量组合成proxy_cache_key
proxy_cache_key "$post:$server_port$uri$is_args$args"
fastcgi_cache相关的指令集
用法和含义分别对应proxy相关的指令
1 fastcgi_cache
2 fastcgi_cache_path
3 fastcgi_cache_methods
4 fastcgi_cache_min_uses
5 fastcgi_cache_valid
6 fastcgi_cache_key