一、缓存实现原理
Web缓存服务器位于内容源Web服务器和客户端之间,当客户端用户访问一个URL时,Web缓存服务器就会请求相应的内容源Web服务器,并将响应的信息缓存至内存或磁盘;然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器会直接将已缓存的内容输出给客户端,而不用再次向内容源Web服务器发送请求。
利用缓存服务器,可以有效降低内容源服务器和数据库的负载,提高用户访问的响应速度。
当用户向Web缓存服务器中发送请求时,缓存服务器要检查一下当前URL请示是否已经存在缓存,若存在则直接返回给用户,否则,向内容源Web服务器发送请求,获取响应结果,将其缓存并返回给发送请求的客户端。
二、永久缓存配置
1.准备服务器
虚拟2台主机:
Web缓存服务器:192.168.12.128
Web内容服务器:192.168.12.129
2.缓存配置
server {
listen 80;
server_name 192.168.12.128;
location / {
root /usr/local/nginx/cache;
proxy_store on;
proxy_store_access user:rw group:rw all:r;
proxy_temp_path cache_tmp;
#利用正则表达式匹配缓存目录中的文件、目录或符号链接是否存在
if ( !-e $request_filename) {
proxy_pass http://192.168.12.129;
}
}
}
3.验证测试
1)在内容源Web服务器(192.168.12.129)上创建test目录及相关“.html”文件
#vim index.html
192.168.12.129/index.html!
[root@Nginx html]# tree
├── 50x.html
├── index.html
├── test
│ ├── install.png
│ └── test.html
└── test.html
1 directory, 5 files
2)以下示意图是从Web缓存服务器(192.168.12.128)访问测试
3)缓存结果如下图所示:
4)也可以利用tree命令可以直观地查看目录结构和文件。
三、临时缓存配置
1)准备服务器
虚拟2台主机:
Web缓存服务器:192.168.12.128
Web内容服务器:192.168.12.129
2)缓存配置:192.168.12.128
http {
......
#代理临时目录
proxy_temp_path /usr/local/nginx/proxy_temp_dir;
#Web缓存目录和参数设置
proxy_cache_path /usr/local/nginx/proxy_cache_dir levels=1:2 keys_zone=cache_one:50m
inactive=1m max_size=500m;
...........................................................
server {
listen 80;
server_name test.ng.test;
#增加两个响应头信息,用于获取访问的服务器地址与缓存是否成功
add_header X-Via $server_addr;
add_header X-Cache $upstream_cache_status;
...........................................................
location / {
proxy_cache cache_one;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_valid 200 10m; #缓存10分钟
proxy_cache_valid 304 1m; #缓存1分钟
proxy_cache_valid 301 302 1h; #缓存1小时
proxy_cache_valid any 1m; #其他未设置的状态缓存1分钟
proxy_pass http://192.168.12.129;
}
}
3)访问测试
实战小结:
1.建议使用firefox浏览器,按功能F12键,总体上方便于测试;
2.如果使用IE浏览器,按功能F12键,先点击网络——开始捕获——刷新当前页面
3.实际上第一次执行是访问了内容web服务器,第二次在有效的时间内访问的是缓存服务器,通过上述图片即可分析得知。