基于Proxy Cache的缓存机制
该机制是Nginx服务器自己实现的类似于Squid的缓存机制,它使用md5算法将请求链接hash后生成文件系统目录保存响应数据。
Nginx服务器在启动后,会生成专门的进程对磁盘上的缓存文件进行扫描,在内存中建立缓存索引,提高访问效率,并且还会生成专门的管理进程对磁盘上的缓存文件进行过期判定、更新等方面的管理。Proxy Cache缓存机制支持对任意链接响应数据的缓存,不仅限于200状态时的数据。
Proxy Cache缓存机制的一个缺陷是,它没有实现自动清理磁盘上缓存源数据的功能,因此在长时间使用过程中会对服务器存储造成一定的压力。
…#其他配置
http {
…… # 其他配置
proxy_cache_path /myweb/server/proxycache levels=1:2 keys_zone=MYPROXYCACHE:10m max_size=2m inactive=5m loader_sleep=1m; # 配置了缓存数据存放路径和Proxy Cache使用
# 的内存Cache空间
proxy_temp_path /myweb/server/tmp; # 配置响应数据的临时存放目录
server {
…… # 其他配置
location / {
…… # 其他配置
proxy_pass http://www.myweb.name/;
proxy_cache MYPROXYCACHE; # 配置使用MYPROXYCACHE这个keys_zone
proxy_cache_valid 200 302 1h; # 配置200状态和302状态的响应缓存1小时
proxy_cache_valid 301 1d; # 配置301状态的响应缓存1天
proxy_cache_valid any 1m; # 配置其他状态的响应数据缓存1分钟
}
}
}
在该实例中,我们首先在http块中配置了缓存数据存放路径和Proxy Cache使用的内存Cache空间。
缓存数据存放在磁盘上/myweb/server/proxycache目录下,它包含两级hash目录,缓存数据的总量不能超过20MB;
如果缓存在5分钟内没有被访问,则强制更新。
内存Cache空间的名字为MYPROXYCACHE,大小不能超过10 MB,每隔1分钟遍历一次磁盘缓存源数据,更新内存Cache中的缓存索引。
之后,我们在server块中,配置使用上面设置好的MYPROXYCACHE内存空间进行Proxy Cache工作,对不同响应状态的数据缓存时间进行了配置。
Last updated
Was this helpful?