nginx定向清理Proxy Cache缓存
nginx定向清理Proxy Cache缓存
作者:matrix 被围观: 4,692 次 发布时间:2017-08-22 分类:零零星星 | 无评论 »
这是一个创建于 1836 天前的主题,其中的信息可能已经有所发展或是发生改变。
很多服务器是使用nginx内置的Proxy_cache来缓存资源,防止不必要的后端请求。有时候需要单独清理某个缓存,这就麻烦了。
按照大多数做法是给nginx安装purge模块,但是目前有更加精简的办法使用代码手动删除
道理很简单:获取nginx缓存url的文件路径,然后删除就可以了。
proxy_cache_key缓存的key
nginx 配置了proxy_cache_key的话需要根据自定义的key来获取url的缓存hash值,默认的key一般都是完整的访问url 具体自己的nginx是以什么作为缓存key的,具体随便找个缓存文件vi一下看看,有些设置了upstream负载均衡,就需要替换访问的host为对应主机上的upstream节点名,SO 随便找个缓存文件看看。
缓存路径的拼接
缓存根目录中一般是 单字母/俩字母/32位字符
路径作为缓存的文件存储。
首先需要对key进行md5 Hash的计算,取出最后3位
字符。
单字母
:md5最后一位
双字母
:md5最后2,3位
最后再拼接出完整路径,删除就可以了。
缓存根目录
是nginx中配置的,默认路径就不清楚了。
PHP代码参考,其他语言还请大牛附言~
//去除服务器nginx缓存
$root = '/var/tmp/Tengine/proxy_cache/';
//之所以替换 使用为nginx服务器设置了反向代理proxy_pass
//具体缓存的key还需查看真实的缓存文件的key值
$map = array(
'http://www.hhtjim.com/' => 'http://www_hhtjim_com_backend/',
);
$key = @$args[0];//访问的url链接作为缓存的key
if(empty($key)) die("Please input the cache url eg:http://www.hhtjim.com\n");
$key = str_replace(array_keys($map), array_values($map), $key);
$md5 = md5($key);
$file = sprintf('%s%s/%s/%s', $root, substr($md5, -1), substr($md5, strlen($md5) - 3, 2), $md5);
if (@unlink($file)) {
echo 'DEL SUCCESS:' . $key."\n";die;
}
echo 'FAILED:'.$file."\n";
最后再访问url看看自己服务器响应头配置的$upstream_cache_status变量X-cache缓存标记为MISS
其他状态参考:
MISS 未命中,请求被传送到后端
HIT 缓存命中
EXPIRED 缓存已经过期请求被传送到后端
UPDATING 正在更新缓存,将使用旧的应答
STALE 后端将得到过期的应答
参考: http://www.jb51.net/article/74595.htm
缓存命中率:http://www.361way.com/nginx-cache/2665.html
peace
相关文章
- Nginx配置文件(nginx.conf)配置详解
- 缓存穿透、缓存雪崩、缓存击穿 问题解决思路
- spring boot redis 缓存_redis本地缓存
- Centos下yum安装Nginx报错 No package nginx available.详解程序员
- MyBatis学习总结(七)——Mybatis缓存详解编程语言
- 缓存Redis缓存:高效处理热数据(redis热数据)
- Linux查看Nginx版本:一步到位(linux查看nginx版本)
- MySQL and PHP: Leveraging Caching for Enhanced Performance(mysqlphp缓存)
- 检查Linux下Nginx服务是否已启动(linux查看nginx是否启动)
- 使用Nginx连接Redis服务器(nginx连接redis)
- Linux下启动Nginx服务的简易步骤(linux启动nginx)
- 缓存解决Redis中Java数据的过期缓存问题(redisjava过期)
- Linux下如何快速删除Nginx(linux删除nginx)
- 文件如何在Linux系统中删除Nginx文件(linux删除nginx)
- 缓存Linux删除Nginx缓存:轻松解决一个困难(linux删除nginx)
- Linux下如何安全删除Nginx(linux删除nginx)
- 日志文件Linux如何快速删除Nginx日志文件(linux删除nginx)
- 配置Linux下删除Nginx配置的步骤(linux删除nginx)
- Nginx网站架构实战——09、编译PHP并与nginx整合
- Nginx主配置文件nginx.conf详解
- 缓存配置Redis类缓存实现低延迟又高性能(怎么配置redis类)
- 清除服务器Redis缓存保持系统正常运行(清除服务器redis缓存)
- 利用Redis管理图像缓存的技术(图像缓存redis)
- Redis集群组播提升分布式缓存性能(redis集群组播)
- 极速提升网站性能使用Redis缓存管理技术(redis缓存用哪个方法)
- QL优势突显,Redis缓存与NOSQL数据库的联合把握(redis缓存和NOS)
- 面试中的Redis缓存原理深度探究(redis缓存原理面试题)
- nginx缓存不起作用问题解决方法