清除缓存的原因:
因为CDN节点做了缓存,在折叠源站点(即后端服务器)更新数据,由于该CDN节点的缓存服务器中的缓存仍在有效期,使CDN的缓存数据与源站数据无法完全同步,所以在实际业务中,经常会遇到清除CDN中指定文件缓存的功能!
核心:数据同步!!!
一、命令手动推送
varnishadm ban req.url "~" / #清除缓存中所有的数据
varnishadm ban req.url "~" /index.html #清除缓存中的此页面数据
测试
curl -I ip -->看清楚缓存后,从哪里拿数据!
可以使用正则表达式快速、批量地清除部分缓存
二、GUI推送
原因:实现CDN高速缓存时通过命令等对CDN的管理有些麻烦,我们就可以使用CDN推送的方法同步后端服务内容!
主要是掌握权限设置列表,不能让什么人都有权限去清理缓存就是想实现把node1代理服务器上面的缓存实现图形化清除,可
以有权限设置现在node1部署这个服务,测试的时候在哪个浏览器里面都可以进行缓存清理这个在node1代理服务器上面设置
- 步骤一:从真机给node1代理传一个压缩包
- 步骤二:在node1代理服务器上面进行设置
开始在node1上面搭建服务
- yum install -y unzip php httpd安装这些服务
- unzip bansys.zip -d /var/www/html解压到apache下
- cd /var/www/html
- ls
- cd bansys/
- mv * ../ 将bansys目录下的东西全部挪到html目录下
- cd ..
- ls
- cd bansys/
- vim config.php改php图形化服务的配置文件
- 改ip是172.25.12.1,apahce端口为8080
- 域名改为www.westos.org(对这个域名的数据进行缓存清理)
- vim /etc/httpd/conf/httpd.conf
- apahce端口为8080
- systemctl restart httpd
- 步骤三:在浏览器里面搜:172.25.12.1:8080(哪个浏览器都性,真机的也可以)
选HTTP - 步骤四:编辑代理服务器的权限列表
vim /etc/varnish/default.cvl
写入权限列表:
acl westos{
"127.0.0.1";主机自己
"172.25.12.0"/24;这个网段的所有主机都有权限清理代理服务器上面的缓存
}
再写入:
if (req.method == "BAN") {
if (!client.ip ~ westos) {
return (synth(405,"Not allowed."));
}如果不是允许的ip就拒绝清理
ban("req.url ~ " + req.url);
return(purge);如果是就清理缓存
}
注释:return(pass),这个会一直清除缓存,之前的实验做的
清除这个代理服务器就不会缓存资源了,直接从服务器请求资源给客户端
systemctl restart varnish
- 步骤五:然后在真机进行测试:
curl -I www.westos.org 是miss
curl -I www.westos.org 是hit
curl -I www.westos.org 是hit
然后图形化清除缓存,输入.*,发送(清除所有缓存)
curl -I www.westos.org/index miss
curl -I www.westos.org/index hit
curl -I www.westos.org/index hit
然后图形化清除缓存
/index.html,输入/index,开始清除缓存 (指定清除哪个缓存)
达到的效果:清除记录在缓存中的东西,客户端访问浏览器时,会直接在后端服务器获取,这样就能完成实时更新。