小知识:nginx缓存以及清除缓存的使用

目录 缓存 清除缓存 控制nginx缓存

缓存

缓存的基本思想是利用客户端访问的时间局限性,将客户端访问过的内容做一个副本,在一定时间内存放到本地,当改数据下次被访问时,不必连接到后端服务器反复去查询数据,而是由本地保存的副本响应数据。 保存在本地的这些副本具有一个过期时间,超过该时间将会更新。判断一个副本数据是否为过期数据的办法有很多,可以使用保留时间来判断,也可以使用数据完整度来判断。 许多Web服务器还具有校验功能,就是当某些副本数据过期以后,先向后端服务器发送校验请求,后端服务器对这些数据进行校验,如果发现原数据和副本没有差别,则将过期副本重新置为可用副本。

缓存的好处

减轻服务器负载 提供网页响应效率 降低网络阻塞,增强网络可扩展性

为什么使用缓存?

服务器处理能力以及负载能力出现瓶颈,响应效率大大降低 为了减少网络传输延迟,提升响应效率 能够避免因为后端服务器出现异常以及网络故障,客户端请求数据副本能够及时响应

nginx的缓存机制

proxy模块指令

%小知识:nginx缓存以及清除缓存的使用-猿站网-插图

以上nginx配置结合使用:

http { . . . proxy_cache_path /cache/nginx levels=1:2 keys_zone=imooc_cache:10m max_size=5g inactive=60m use_temp_path=off; . . . server { . . . location /api/ { proxy_cache imooc_cache; proxy_pass 127.0.0.1:81/api/; proxy_cache_valid 200 304 12h; proxy_cache_valid any 10m; proxy_cache_key $host$uri$is_args$args; include proxy_params; } } }

proxy_params文件的配置如下:

proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_connect_timeout 30; proxy_send_timeout 60; proxy_read_timeout 60; proxy_buffering on; proxy_buffer_size 32k; proxy_buffers 4 128k;

访问一次页面,并向 http://192.168.148.168:8000/api/ 发起一个接口数据请求,查看/cache/nginx目录下的缓存结果:

[root@localhost 02]# cat 9563faff155b9fcfbf3fb1b16c253021 ¿]n`ÿÿÿÿÿÿÿÿÿ´m`Džt> KEY: 192.168.148.170/api/index.php HTTP/1.1 200 OK Date: Wed, 07 Apr 2021 13:34:55 GMT Server: Apache/2.4.46 (Unix) PHP/7.4.16 X-Powered-By: PHP/7.4.16 Content-Length: 31 Connection: close Content-Type: text/html; charset=UTF-8 this is 192.168.148.170_php_new[root@localhost 02]#

清除缓存

ngx_cache_purge是nginx的第三方模块,能够帮助我清除nginx中的缓存。

如果启动了缓存,没有安装这个模块(ngx_cache_purge),重启nginx会出现异常:

2021/04/18 10:15:36 [emerg] 12180#0: unknown directive “proxy_cache_purge” in /vhost/test_170.cc.conf:20

这个异常是在指示我们,找不到该指令的驱动,需要按照相关模块。

ngx_cache_purge只是nginx的第三方模块,并不是某个特殊的软件,所以我们需要对nginx重新进行编译,操作如下:

./configure –sbin-path=/usr/local/nginx/nginx –conf-path=/usr/local/nginx/nginx.conf –pid-path=/usr/local/nginx/nginx.pid –with-http_gzip_static_module –with-http_stub_status_module –with-file-aio –with-http_realip_module –with-http_ssl_module –with-pcre=/home/pcre-8.44 –with-zlib=/home/zlib-1.2.11 –with-openssl=/home/openssl-1.1.1g –add-module=/home/ngx_cache_purge-2.3 make -j2 make install

配置nginx:

location ~ /clear_cache(.*) { allow all; proxy_cache_purge imooc_cache $host$1$is_args$args; }

缓存清除测试

访问:http://192.168.148.170:8000/clear_cache//api/index.php, 访问这个链接将会清除接口:http://192.168.148.170:8000//api/index.php 的缓存数据。

成功清除缓存返回结果如下

%小知识:nginx缓存以及清除缓存的使用-1猿站网-插图

没有缓存返回结果如下

%小知识:nginx缓存以及清除缓存的使用-2猿站网-插图

控制nginx缓存

proxy_no_cache

# set 指令为变量设置,proxy_no_cache参数中的值可以设置多个,但是多个值中,只要有一个是不为0的,就会通过缓存响应数据 server { . . . location /api/ { set $a 0; #设置初始值 if ( $request_uri ~ /api/noapi/(.*) ){ set $a 1; #如果满足不缓存 设置为1 } proxy_no_cache $a;// . . . } location ~ /clear_cache(.*) { allow all; proxy_cache_purge imooc_cache $host$1$is_args$args; } }

查看proxy_cache指令详解

到此这篇关于nginx缓存以及清除缓存的使用的文章就介绍到这了,更多相关nginx缓存及清除缓存内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文地址:https://blog.csdn.net/sinat_38926283/article/details/115821450

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:Nginx搭建图片视频服务器的部署步骤

2023-3-19 0:56:08

建站知识

小知识:详解Nginx_cache_purge _proxy_cache指令使用

2023-3-19 1:14:48

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索