Nginx-helper纯代码版,文章评论发布自动清理Fastcgi缓存

摘 要

张戈博客之前分享过Nginx开启fastcgi静态缓存加速的教程,文中也提到了WordPress对应的最佳配套插件:Nginx-Helper。本文分享一个博客自用、原创的Nginx-Helper纯代码版本,帮你的网站再消灭一个插件。

Nginx-Helper这款插件主要用于Nginx的Fastcgi缓存或Redis缓存清理,用起来确实不错,堪称绝配!感兴趣可以翻看博客之前的分享:

Nginx开启fastcgi_cache缓存加速,支持html伪静态页面

解决Nginx Helper插件一键清理缓存功能导致网站打不开问题

Nginx-helper纯代码版,文章评论发布自动清理Fastcgi缓存

最近,发现文章发布缓存清理不生效了,开启日志看了下,发现插件清理文章缓存的时候在文章地址后多加了一个斜杠,比如 https://zhangge.net/5111.html/ ,那这样肯定不行了,因为fastcgi缓存是和url密切相关的,多一个斜杠,自然就南辕北辙了。

想想可能是和我博客加了 “分类地址后面自动加斜杠” 的机制导致的吧!懒得研究如何解决,想起之前给有偿用户写过一个纯代码版本,解决PHP版本过低无法兼容Nginx-Helper插件的问题。这次正好拿来完善一下,而且还能消灭一个插件。

经过代码编写、测试验证,一个简单的Nginx-Helper纯代码原创版本就新鲜出炉了。

Ps:2016年12月11日更新:修复了文章更新发布无法清理首页缓存问题,请重新拷贝如下代码。

根据实际情况,修改代码中的缓存路径配置:

Ps:这个路径其实就是Nginx Fastcgi缓存配置中的 fastcgi_cache_path 参数,详见前文分享

然后,将整段粘贴到 WordPress 主题函数模板文件 functions.php 当中即可。其他功能细项,在代码中都有详细的注释了,自行参考修改。

现在发布/更新文章、评论提交/审核,就会自动删除当前文章缓存了,发布/更新文章还会清理首页、分类以及相关标签页缓存(不需要可根据代码中的注释进行屏蔽)。

另外,如果想清理全部缓存,可在管理员登陆状态下访问首页+?purge=all参数,比如:http://zhangge.net/?purge=all ,其他用户或访客访问这个地址则没有任何作用,如果还不放心也可以自行更改代码中的参数判断字符串。

经过测试,这种带参数的路径同样会被Nginx缓存,也就说?purge=all只能用一次,第二次刷新就没效果了,因为被Nginx缓存了,要解决也很简单,在fastcgi缓存配置中排除这个路径即可:

当然,如果是按照 Nginx-Helper插件,那还能添加更多功能,比如清理订阅页面缓存什么的。但是我觉得并不需要,有以上基础功能已经足够了。有模仿能力、动手能力的站长朋友,完全可以在以上代码的基础上添加自己想要的功能,相信也是小菜一碟。

发表评论

gravatar

:?::razz::sad::evil::!::smile::oops::grin::eek::shock::???::cool::lol::mad::twisted::roll::wink::idea::arrow::neutral::cry::mrgreen:

刷新评论

目前评论:49   其中:访客  40   博主  9

  1. 小鱼 1 来自天朝的朋友 谷歌浏览器 Windows 10 河南省郑州市新密市 联通

    请教一下,我使用了nginx fastcgi_cache,然而却出现了问题。缓存文件夹里会生成类似0 1 3 4 e f之类的文件夹和文件,点击后台 purge cache 缓存文件也会清空。并且网页源文件底部也有nginx helper缓存字样。但是后台查看nginx helper的log文件,里面是空的,而且浏览器访问网站,也没有x-cache:HIT From XX 和nginx-cache:HIT字样,却有Cache-Control:no-cache, must-revalidate, max-age=0不知道问题出在哪了?谢谢戈哥指点!

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Mac OS X 10_11_3 广东省深圳市 移动

      • 小鱼 1 来自天朝的朋友 谷歌浏览器 Windows 10 河南省郑州市新密市 联通

        已经加上这一条了,但是没有作用。以前也配置过一次,都是参考你的文章,上次没有问题,这次却出现这个问题。环境都是一样的,找了半天也没发现问题出在哪。。。

        • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Mac OS X 10_11_3 广东省深圳市 移动

          你应该是设置了登录用户不缓存。可以尝试开启浏览器隐身模式去看HIT

          • 小鱼 1 来自天朝的朋友 谷歌浏览器 Windows 10 河南省郑州市新密市 联通

            这个也没有,谢谢戈哥解答。我再重新配置一次环境试试。要是还有同样的问题,那就得仔细看看了。。。

            • 我爱动感单车网 4 来自天朝的朋友 谷歌浏览器 Windows XP 广西桂林市 电信

              羡慕你们都使用上了服务器,咱还停留在廉价虚拟主机的阶段啊!

  2. 菊部 5 来自天朝的朋友 谷歌浏览器 Mac OS X 10_11_3 湖北省武汉市 电信

    感谢分享

  3. 小萝博客 3 来自天朝的朋友 谷歌浏览器 Windows 7 广东省珠海市 电信

    签到成功!签到时间:下午8:59:39,每日签到,生活更精彩哦~

  4. 小C博客 4 来自天朝的朋友 QQ浏览器 Windows 7 浙江省宁波市 电信

    有时间弄上,又可以删一个插件了!

    • 今日秀 1 来自天朝的朋友 火狐浏览器 Windows 7 广东省深圳市 电信

      是咯 好东西

  5. 鸡排加盟网 0 来自天朝的朋友 谷歌浏览器 Windows 7 北京市 电信

    不错666

  6. 诺言工作室 1 来自天朝的朋友 谷歌浏览器 Windows 10 北京市 电信通

    和博主学到不少

  7. 任务易 2 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省武汉市 电信

    已经收藏了,目前还木有碰到这种情况,我相信以后或许会用到,谢谢博主分享

  8. 爱眼博客 1 来自天朝的朋友 谷歌浏览器 Windows 7 广西玉林市 电信

    好文章,欢迎回访

  9. 卢松松商城 1 来自天朝的朋友 谷歌浏览器 Windows 10 浙江省 电信

    好复杂好难懂。。

    • 路过的 4 来自天朝的朋友 谷歌浏览器 Windows XP 广东省 联通

      怎么卢松松到处去留言评论,请了专门的人来做的吗

      • 我爱动感单车网 4 来自天朝的朋友 谷歌浏览器 Windows XP 广西桂林市 电信

        是啊,今年下半年来很多博客都能够看见卢松松的身影,怎么又重拾起了评论推广这个方式呢?

  10. 柒号淘金 0 来自天朝的朋友 搜狗浏览器 Windows 10 河北省邯郸市 电信

    学习中。。

  11. 苏城一只猫 1 来自天朝的朋友 谷歌浏览器 Windows 10 江苏省苏州市 电信

    测试了好几遍,只要是用七牛存储的,上传资源一直报E502报错….不知道咋回事。关闭这个换成就没事了。

  12. 灵异网站 0 来自天朝的朋友 谷歌浏览器 Windows 7 山西省阳泉市 联通

    迷迷糊糊的看着

  13. 励志语录 3 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省杭州市 联通

    赞一个

  14. 蜜思私护 1 来自天朝的朋友 谷歌浏览器 Windows 7 安徽省安庆市 电信

    看起来好厉害的样子

  15. 蜜思私护 1 来自天朝的朋友 谷歌浏览器 Windows 7 安徽省安庆市 电信

    看起来好复杂啊!~

  16. 我爱动感单车网 4 来自天朝的朋友 谷歌浏览器 Windows XP 广西桂林市 电信

    咱用的是虚拟主机,虚拟主机又该怎么弄呢?

  17. 任务易 2 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省武汉市 电信

    看的头晕眼花,可以直接复制粘贴的么

  18. 网赚博客 1 来自天朝的朋友 谷歌浏览器 Windows 7 山东省 联通

    这个确实是很实用

  19. 路过 0 来自天朝的朋友 谷歌浏览器 Windows 7 河北省廊坊市 电信

    这篇文章中的设置已经失效:http://zhangge.net/5089.html

  20. 胡歌网摘 4 来自天朝的朋友 谷歌浏览器 Windows 7 江西省萍乡市 电信

    zg,现在用的是哪里cdn? 怎么也支持https?

    • 张戈 [博主] 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市 电信

      腾讯云CDN

  21. 胡歌网摘 4 来自天朝的朋友 谷歌浏览器 Windows 7 江西省萍乡市 电信

    你还用沃通证书啊,不换一下?

    • 张戈 [博主] 来自天朝的朋友 谷歌浏览器 Windows 7 广东省广州市 电信

      3年的证书,省事不换了。前面申请的沃通是没有问题的。

  22. 张力博客 0 来自天朝的朋友 谷歌浏览器 Windows 7 湖北省 电信

    o(∩_∩)o 哈哈,不错,已经用上了,又删除了一个插件!

  23. nom 1 来自天朝的朋友 谷歌浏览器 Windows 7 浙江省杭州市 电信

    学习了1

  24. Biebb 1 来自天朝的朋友 火狐浏览器 Windows 10 四川省成都市 电信

    终于又有东西能折腾了

  25. Qa 4 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省长沙市 电信

    想请教下,nginx 通过cookie判断用户是否已登录经常失误是什么问题?

    通过判断cookie,分开缓存登录用户和游客两份缓存。经常出现登录用户看到的是游客的缓存的情况。

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      判断失误,可能是cookies异常吧,没拿到这个cookies。
      看了你的分享,分开游客和登陆用户,有点意思。不过没明白都是静态缓存,分开缓存的目的难道是因为游客和登陆用户界面上有些不同?
      不过,你这个思路很适合用于非自适应的网站,PC站和移动端的分开缓存。

      • Qa 4 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省长沙市 电信

        登录用户和游客看到的页面是不一样的。如果不缓存起来,登录用户太多mysql查询爆炸。
        PS:今天这个打字效果真有意思。

        • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

          我觉得个人博客没必要开启注册,放弃一切登录态才是王道。
          如果是业务网站,毕竟有收入,配置也不是个人网站可以比的。
          对于登陆用户的mysql查询,可以使用memcached或redis来动态缓存,效果也是不错的。

      • Qa 4 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省长沙市 电信

        我的博客就是PC和移动端是分开缓存的。

      • Qa 4 来自天朝的朋友 谷歌浏览器 Windows 7 湖南省长沙市 电信

        想通过前段判断用户是否登录和页面缓存是否错误,错误就发送请求刷新此页缓存。
        不知道该如何判断是否已登录,wordpress_logged_in这个cookie JS没法取。
        不知道张戈有什么建议?

        • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

          每个页面异步发起一个动态请求,应该可以查到是否具备登录态。

  26. 采觅随记 4 来自天朝的朋友 火狐浏览器 Windows 10 浙江省宁波市北仑区 电信

    咦老张,突然发现你从360免费CDN转性能魔方了。 :grin:

  27. 首页不缓存 0 来自天朝的朋友 谷歌浏览器 Windows 10 广东省广州市 电信

    首页不缓存好像没效.
    输入 abc.com/index.php 它会自动跑为 abc.com, 后面的自动消失.
    所以被缓存了, 除非已经登录状态.
    怎么设置才行呢?

  28. 刘曌博客 1 来自天朝的朋友 火狐浏览器 Windows 10 北京市 移动

    博主网站特效很给力签到成功!签到时间:下午3:33:13,每日签到,生活更精彩哦~

  29. 大海 0 来自天朝的朋友 谷歌浏览器  Android 4.4.4 MI PAD Build/KTU84P 江苏省徐州市 联通

    博主,请问你,生成的缓存目录里的文件名是怎么命名的?我的目录里感觉乱七八糟的有数字 有英文,
    还有个很严重的问题,使用了这个缓存模块,我的博客有时能打开有时打不开,有的浏览器还打不开,比如电脑能访问,手机就是打不开,无法加载,回复评论 也没感觉到清理缓存了,反而回复后网站直接挂了。。折腾坏了 :!: ,感觉折腾不来,还耽误事,请问博主,如果不使用这个nginx缓存模块,对wp来说使用哪个插件或者手动缓存方案比较好,谢谢

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      你还是老是用插件把,比如 wp-super-cache

  30. 小C博客 4 来自天朝的朋友 QQ浏览器 Windows 7 上海市 上海安畅通信科技有限公司

    张哥,使用后网站无法打开了。

    • 张戈 [博主] 来自天朝的朋友 QQ浏览器 Windows 7 广东省广州市 电信

      原来的插件没有停掉么?报错信息是什么?

  31. 小C博客 4 来自天朝的朋友 QQ浏览器 Windows 7 浙江省杭州市 电信

    插件已经停用,访问https://www.domain.com/?purge=all 后无法打开,并且后台也无法打开,能否指导下,谢谢!

加载中,请稍候...