一、缓存实现原理

Web缓存服务器位于内容源Web服务器和客户端之间,当客户端用户访问一个URL时,Web缓存服务器就会请求相应的内容源Web服务器,并将响应的信息缓存至内存或磁盘;然后,当下一个请求到来时,如果访问的是相同的URL,Web缓存服务器会直接将已缓存的内容输出给客户端,而不用再次向内容源Web服务器发送请求。

利用缓存服务器,可以有效降低内容源服务器和数据库的负载,提高用户访问的响应速度。

image.png

当用户向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

<h1>192.168.12.129/index.html!</h1>

[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)访问测试

image.png

image.png

image.png

3)缓存结果如下图所示:

image.png

4)也可以利用tree命令可以直观地查看目录结构和文件。

image.png

三、临时缓存配置

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)访问测试

image.pngimage.png

image.png

实战小结:

1.建议使用firefox浏览器,按功能F12键,总体上方便于测试;

2.如果使用IE浏览器,按功能F12键,先点击网络——开始捕获——刷新当前页面

3.实际上第一次执行是访问了内容web服务器,第二次在有效的时间内访问的是缓存服务器,通过上述图片即可分析得知。