[网站运营] Nginx-helper纯代码版Fastcgi和Redis缓存清理
作者:精品资源网 日期:2022-06-23 05:00:03 浏览:299 分类:站长帮
Nginx-Helper 这款插件主要用于 Nginx 的 Fastcgi 缓存或 Redis 缓存清理,最近,发现文章发布缓存清理不生效了,开启日志看了下,发现插件清理文章缓存的时候在文章地址后多加了一个斜杠,那这样肯定不行了,因为 fastcgi 缓存是和 url 密切相关的,多一个斜杠就无法自动清理缓存,导致评论无法及时的刷新。
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 为开源免费插件,或许比这个代码版还好用呢。
猜你还喜欢
- 03-06 [建站交流] PicGo + smms 构建图床
- 11-18 [emlog技巧] Emlog非插件显示评论者IP属地
- 07-28 [运维笔记] 解决网站出现"SSL_ERROR_RX_RECORD_TOO_LONG"问题
- 07-28 [运维笔记] 宝塔面板手动和自动释放Linux服务器内存及清理服务器日志缓存
- 06-30 [站长帮] CentOS(宝塔)部署安装发布Scratch3.0
- 06-30 [站长帮] CentOS 7安装宝塔面板
- 05-01 [涨姿势] 宽带师傅不说的秘密,用手机就能解除宽带限速,网速立马翻倍
- 03-23 [站长帮] WordPress 网站打不开提示“将您重定向的次数过多”的解决方法
- 08-06 [网站教程] 利用宝塔实现百度自动推送
- 06-27 [网站运营] WordPress纯代码为文章自动生成标签和自动添加标签内链
- 06-27 [网站运营] WordPress网站专用CloudFlare免费CDN缓存规则
- 06-26 [网站运营] 开发者如何自定义WordPress自带的XML站点地图功能
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 不亲密朋友 WEB-DL版下载/(Not) Close Friends/Not Friends/Phuean (Mai) Sanit/他的最后一个朋友(台)/第151个朋友(港) 2023 เพื่อน (ไม่) สนิท 7.14G
[影视] 周处除三害 WEB-DL版下载/The Pig, the Snake, and the Pigeon 2023 周處除三害 6.34G
[影视] 真实的谎言 4K蓝光原盘下载+高清MKV版/真实谎言/魔鬼大帝:真实的谎言 1994 True Lies 78.4GB
[硬件检测] 内存测试工具 MemTestPro 汉化版(7.0)
[硬件检测] 专业硬件检测工具 | HWiNFO(8.0.5400.0)
[系统加速] 利用内存给硬盘加速 | RamCache III 去限制版(1.01.12)
[游戏资讯] 最近热门手游有哪些,装备全靠打的手游有哪些游戏,好玩的角色扮演游戏手游
[云图志] 【皇马】Adidas Y-3 山本耀司联名广告 图集
[素材] 视频剪辑BGM音频素材包合集
[网页开发] FrontPage 2003 简体中文版
[图像制作] Adobe Illustrator 2024 v28.1.0.141 破解版
[思维导图] MindManager_2023_v23.1.240_中文破解版
[思维导图] EdrawMax(万兴亿图图示破解版)13.0.2.1071
[视频剪辑] Filmora(万兴喵影2023)13.0.60.5095 破解版
[下载工具] Internet Download Manager 6.42.7 (IDM)
[漫画合集] 漫威 DC 漫画全集 PDF
[系统安全] Deep Freeze 8.71.020.5734 冰点还原破解版
[动画] 假如...? 第一至二季[全18集][简繁英字幕].What.If.S01-2[MP4][打包合集]
[资料] 3000 套电影电视剧 LOGO 宣传片常用音效合集包
[辅助下载] 4K Video Downloader_v4.30.0.5655破解版
[影视] 海王2:失落的王国 WEB-DL版下载/Aquaman 2/水人2/水行侠 失落王国(台)/水行侠与失落王国(港)/海王与失落的王国/潜水侠2 2023 Aquaman and the Lost Kingdom 24.97G
[影视] 三大队 WEB-DL版下载/Endless Journey/请转告局长,三大队任务完成了 2023 三大队 6.7G
[文艺晚会] 中央电视台-1987西游记晚会齐天乐 1080P全高清修复完整版
[电影] 孤注一掷 [1080p].No.More.Bets.2023.Chinese.CAMRip.x264[MP4]
[剧集] 繁花 (2023)[全30集][打包]
[影视] 如何做爱 WEB-DL版下载/第一次 2023 How to Have Sex 5.33G
[影视] 拿破仑 WEB-DL版下载/士兵行囊 / Kitbag 2023 Napoleon 26.61G
[影视] 涉过愤怒的海 WEB-DL版下载/怒海 / Across the Furious Sea 2023 涉过愤怒的海 26.3G
[影视] 首尔之春 WEB-DL版下载 /12.12: The Day 2023 8.06GB
[影视] 年会不能停! WEB-DL版下载/Johnny Keep Walking! 2023 年会不能停! 21.71G
- 最新评论
-
值得拥有Bernery 评论于:03-15 东方快车三月 评论于:03-15 周处除三害三月 评论于:03-14 有些**源确实没字幕精品资源网 评论于:03-12 多谢楼主分享Bernery 评论于:03-04 之前下的没有中文字幕啊Bernery 评论于:03-04 热辣滚烫三月 评论于:02-29 感谢楼主,龙年大吉!三月 评论于:02-25 龙年大吉!三月 评论于:02-25 龙年大吉三月 评论于:02-25
- 热门tag