[网站运营] Nginx-helper纯代码版Fastcgi和Redis缓存清理
作者:观棋 日期:2022-06-23 05:00:54 浏览:172 分类:涨姿势
Nginx-Helper 这款插件主要用于 Nginx 的 Fastcgi 缓存或 Redis 缓存清理,最近,发现文章发布缓存清理不生效了,开启日志看了下,发现插件清理文章缓存的时候在文章地址后多加了一个斜杠,那这样肯定不行了,因为 fastcgi 缓存是和 url 密切相关的,多一个斜杠就无法自动清理缓存,导致评论无法及时的刷新。
![[网站运营] Nginx-helper纯代码版Fastcgi和Redis缓存清理,第1张 [网站运营] Nginx-helper纯代码版Fastcgi和Redis缓存清理,第1张](https://www.yuanjudao.com/zb_users/upload/2022/06/20220623051158165593231840259.webp)
Nginx-Helper 纯代码来自张戈博客,使用起来还不错,这里分享给大家。
/**
* WordPress Nginx Nginx-Helper 纯代码版缓存清理代码
*/
//初始化配置
$logSwitch = 0; //配置日志开关,1 为开启,0 为关闭
$logFile = '/tmp/purge.log'; //配置日志路径
$cache_path = '/tmp/wpcache'; //配置缓存路径
//清理所有缓存(仅管理员) 示例:http://www.123.com/?purge=all
if ($_GET['purge'] == 'all' && is_user_logged_in()) {
if( current_user_can( 'manage_options' ))
{
delDirAndFile($cache_path, 0);
}
}
//缓存清理选项
add_action('publish_post', 'Clean_By_Publish', 99); //文章发布、更新清理缓存
add_action('comment_post', 'Clean_By_Comments',99); //评论提交清理缓存(不需要可注释)
add_action('comment_unapproved_to_approved', 'Clean_By_Approved',99); //评论审核清理缓存(不需要可注释)
//文章发布清理缓存函数
function Clean_By_Publish($post_ID){
$url = get_permalink($post_ID);
cleanFastCGIcache($url); //清理当前文章缓存
cleanFastCGIcache(home_url().'/'); //清理首页缓存(不需要可注释此行)
//清理文章所在分类缓存(不需要可注释以下 5 行)
if ( $categories = wp_get_post_categories( $post_ID ) ) {
foreach ( $categories as $category_id ) {
cleanFastCGIcache(get_category_link( $category_id ));
}
}
//清理文章相关标签页面缓存(不需要可注释以下 5 行)
if ( $tags = get_the_tags( $post_ID ) ) {
foreach ( $tags as $tag ) {
cleanFastCGIcache( get_tag_link( $tag->term_id ));
}
}
}
// 评论发布清理文章缓存
function Clean_By_Comments($comment_id){
$comment = get_comment($comment_id);
$url = get_permalink($comment->comment_post_ID);
cleanFastCGIcache($url);
}
// 评论审核通过清理文章缓存
function Clean_By_Approved($comment)
{
$url = get_permalink($comment->comment_post_ID);
cleanFastCGIcache($url);
}
//日志记录
function purgeLog($msg)
{
global $logFile, $logSwitch;
if ($logSwitch == 0 ) return;
date_default_timezone_set('Asia/Shanghai');
file_put_contents($logFile, date('[Y-m-d H:i:s]: ') . $msg . PHP_EOL, FILE_APPEND);
return $msg;
}
// 缓存文件删除函数
function cleanFastCGIcache($url) {
$url_data = parse_url($url);
global $cache_path;
if(!$url_data) {
return purgeLog($url.' is a bad url!' );
}
$hash = md5($url_data['scheme'].'GET'.$url_data['host'].$url_data['path']);
$cache_path = (substr($cache_path, -1) == '/') ? $cache_path : $cache_path.'/';
$cached_file = $cache_path . substr($hash, -1) . '/' . substr($hash,-3,2) . '/' . $hash;
if (!file_exists($cached_file)) {
return purgeLog($url . " is currently not cached (checked for file: $cached_file)" );
} else if (unlink($cached_file)) {
return purgeLog( $url." *** CLeanUP *** (cache file: $cached_file)");
} else {
return purgeLog("- - An error occurred deleting the cache file. Check the server logs for a PHP warning." );
}
}
/**
* 删除目录及目录下所有文件或删除指定文件
* @param str $path 待删除目录路径
* @param int $delDir 是否删除目录,1 或 true 删除目录,0 或 false 则只删除文件保留目录(包含子目录)
* @return bool 返回删除状态
*/
function delDirAndFile($path, $delDir = FALSE) {
$handle = opendir($path);
if ($handle) {
while (false !== ( $item = readdir($handle) )) {
if ($item != "." && $item != "..")
is_dir("$path/$item") ? delDirAndFile("$path/$item", $delDir) : unlink("$path/$item");
}
closedir($handle);
if ($delDir)
return rmdir($path);
}else {
if (file_exists($path)) {
return unlink($path);
} else {
return FALSE;
}
}
}根据实际情况,修改代码中的缓存路径配置:
$cache_path = '/tmp/wpcache'; //配置缓存路径 注意:这个路径其实就是 Nginx Fastcgi 缓存配置中的 fastcgi_cache_path 参数
然后,将整段粘贴到 WordPress 主题函数模板文件 functions.php 当中即可。其他功能细项,在代码中都有详细的注释了,自行参考修改。
现在发布/更新文章、评论提交/审核,就会自动删除当前文章缓存了,发布/更新文章还会清理首页、分类以及相关标签页缓存(不需要可根据代码中的注释进行屏蔽)。
另外,如果想清理全部缓存,可在管理员登陆状态下访问首页+?purge=all 参数,比如:https://www.1.com/?purge=all ,其他用户或访客访问这个地址则没有任何作用,如果还不放心也可以自行更改代码中的参数判断字符串。
?purge=all
经过测试,这种带参数的路径同样会被 Nginx 缓存,也就说?purge=all 只能用一次,第二次刷新就没效果了,因为被 Nginx 缓存了,要解决也很简单,在 fastcgi 缓存配置中排除这个路径即可:
#后台等特定页面不缓存(其他需求请自行添加即可)
if ($request_uri ~* "purge=all|/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}如果你觉得麻烦的话建议在后台插件市场安装 Nginx Helper 插件使用即可,都是一样的效果,Nginx Helper 为开源免费插件,或许比这个代码版还好用呢。
猜你还喜欢
- 11-10 城阳电工电路:家庭电路问题频出,一路寻找发电厂的奇怪之旅!
- 11-03 雀儿满天飞:品酒聊人生,倾听初恋回忆,探索小仙女的爱情价值观
- 08-02 [网络技巧] CF Worker搭建vless协议代理
- 08-02 [web] CloudFlare通过SaaS免费使用CNAME接入域名解析
- 08-01 [经验分享] 使用金山文档的每日定时任务实现阿里云盘自动每日签到,无需部署,无需服务器
- 07-07 [教程] Wise激活全流程教学详解(全程丝滑)
- 06-22 [涨姿势] 空调省电的秘密,我后悔现在才知道
- 05-09 [电脑技巧] 连接ftp的三种方式
- 04-25 [玩手机] 手机一直在提示更新,你们觉得更新好还是不好呢?
- 04-25 [福利教程] 基于ChatGPT4.0免费,保姆级教你申请注册自己的NewBing账号
- 04-24 [玩网络] 优化你的网络线路(高级篇)——选购租赁哪款VPN或者VPS
- 04-24 [玩网络] 优化你的网络线路(进阶篇)——为什么要使用VPN或者VPS
取消回复欢迎 你 发表评论:
-
- 最新文章
- 热门文章
- 热评文章
![[资料] AI行业最新资料大全(391份)](https://www.yuanjudao.com/zb_users/upload/2024/04/20240409180135171265689528619.jpeg)
[资料] AI行业最新资料大全(391份)
![[书籍] 【私人珍藏精品好书A-100部】](https://www.yuanjudao.com/zb_users/upload/2024/04/20240408163154171256511453051.png)
[书籍] 【私人珍藏精品好书A-100部】
![[书籍] TXT电子书大合集(70000本)](https://www.yuanjudao.com/zb_users/upload/2024/04/20240408162655171256481563013.jpeg)
[书籍] TXT电子书大合集(70000本)
![[翻译识别] Pot v2.7.9 跨平台划词翻译和OCR工具](https://www.yuanjudao.com/zb_users/upload/2024/04/20240404173358171222323898322.jpeg)
[翻译识别] Pot v2.7.9 跨平台划词翻译和OCR工具
![[素材资源] 短视频剪辑配音音效库(9000+)](https://www.yuanjudao.com/zb_users/upload/2024/04/20240404171827171222230789292.png)
[素材资源] 短视频剪辑配音音效库(9000+)
![[笔刷] 337期全中文笔刷大合集,全网分类最精准,iPad手绘强推!](https://www.yuanjudao.com/zb_users/upload/2024/04/20240404161420171221846074126.png)
[笔刷] 337期全中文笔刷大合集,全网分类最精准,iPad手绘强推!
![[英语教育] 新概念英语视频教程](https://www.yuanjudao.com/zb_users/upload/2024/04/20240404104614171219877474998.jpeg)
[英语教育] 新概念英语视频教程

樱花妹攻略

2-7更新《幻兽帕鲁》v0.1.4.1中文版下载+建立服务器+steam联机教程
![[上传下载] 比特彗星(BitComet) v2.05 解锁全功能豪华版](https://www.yuanjudao.com/zb_users/upload/2023/12/20231206190554170186075460545.jpeg)
[上传下载] 比特彗星(BitComet) v2.05 解锁全功能豪华版

【12-11暂停更新】SSR更新分享,老司机懂的,滴滴!

ai明星同人换脸,《极乐神教》1-5部合集

极品番号动图推荐一波12-28

上原亚衣(上原亜衣)作品番号合集

酒井千波(酒井ちなみ)作品番号合集
![[3D漫画] [3D全彩/合集]同人画师—大D 2020年12月步兵整合+游戏插画[210MB]](https://www.yuanjudao.com/zb_users/upload/2021/01/20210108033214_39763.jpg)
[3D漫画] [3D全彩/合集]同人画师—大D 2020年12月步兵整合+游戏插画[210MB]

SWAG最美女演员“chinhbaby”,SWAG里演过圣诞麋鹿妹的新片

越南少女“Erica hand”回归P站更名为“Xiao e”

教你如何搜索AV字幕,中文字幕爱好者的福利

白咲碧(香椎みなみ)作品番号合集

【12-11暂停更新】SSR更新分享,老司机懂的,滴滴!
![[PC+安卓]表姐1.6完结版 汉化作弊版|我的性感表姐 Ver1.60 精修汉化作弊版,新增全程攻略](https://www.yuanjudao.com/zb_users/upload/2019/07/201907061562411242172298.jpg)
[PC+安卓]表姐1.6完结版 汉化作弊版|我的性感表姐 Ver1.60 精修汉化作弊版,新增全程攻略

2021科幻动作《永恒族》4K.HD中英双字
![[动画] [铃芽之旅 Suzume no Tojimari][铃芽户缔][Trial Version]【正式流媒体版】外挂中字 正式版](https://www.yuanjudao.com/zb_users/upload/2023/04/20230403003810168045349041554.jpeg)
[动画] [铃芽之旅 Suzume no Tojimari][铃芽户缔][Trial Version]【正式流媒体版】外挂中字 正式版

全国大保健狼友资源,全部验证过,老司机数据库
![[公告]必看!关于充值、资源等问题](https://www.yuanjudao.com/zb_users/plugin/tx_side/img/nopic.png)
[公告]必看!关于充值、资源等问题
![[资料] 1~12年级奥数教程](https://www.yuanjudao.com/zb_users/upload/2023/01/20230116233416167388325675216.jpeg)
[资料] 1~12年级奥数教程
![[美剧] [西部世界][1-4 季合集][英语双字][无删减][MP4][BD1080p]](https://www.yuanjudao.com/zb_users/upload/2022/08/20220817021932166067397269827.jpeg)
[美剧] [西部世界][1-4 季合集][英语双字][无删减][MP4][BD1080p]
![[极品国模] 刘亦雯2021.03.28(S)无水印,明星颜值极品身材国模大尺度私拍[765P/5.12G]](https://www.yuanjudao.com/zb_users/upload/2022/10/20221004030632166482399262690.jpeg)
[极品国模] 刘亦雯2021.03.28(S)无水印,明星颜值极品身材国模大尺度私拍[765P/5.12G]

极品美女好身材可爱面容带你爱爱,美颜撸管必备-更新链接
- 最新评论
-

有意思的片子sdssds3 评论于:03-22 
很久就想看啦。谢谢楼主sdssds3 评论于:03-22 
经典永留存bantiaomin 评论于:02-08 
看看在说四个眼 评论于:02-03 
gooooooodflyingmoon 评论于:01-04 
コメント我喜双中国、万分感谢t3taira 评论于:08-30 
好评推荐bbaa365 评论于:08-28 
加油很好啊军子混混 评论于:08-20 
感谢分享123yaonie 评论于:08-19 
不知道算不算,毕竟这集早就有了,今年莫名又被拿出来播观棋 评论于:08-16
- 热门tag

