网站建设

WordPress发布/更新文章、提交/审核评论自动清理阿里云CDN缓存

Jager · 8月6日 · 2017年 · · 7281次已读

使用过 CDN 的朋友多少都有过文章更新无法自动删除 CDN 缓存的困惑,针对这个痛点,张戈博客也是多次发布相关教程,为广大草根站长朋友们解惑,比如:

WordPress 发布/更新文章、提交/审核评论自动清理腾讯云 CDN 缓存

WordPress 发布/更新文章、提交/审核评论自动清理 VeryCloud 缓存

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

但是,仍然不能满足博友们的诉求,于是很多朋友留言、邮件给我,要我帮忙写一个 XX 云 CDN 的自动清理功能之类的请求,我一般都是给出了敬请期待之类答复。

由于本人日常工作非常繁忙,所以只能一再跳票,今天难得得空,正好研究下阿里云 CDN 的缓存清理。

实际上,这些 XX 云 CDN 基本都有一些 SDK 接口文档,有点基础的朋友多花点时间撸一撸都能自己写出来,再说张戈博客之前还分享了好几篇类似教程,依葫芦画瓢总会吧?总不能因为有个 XX 云就要写一个 XX 云 CDN 清理教程吧?写完了 XX 云可能很快又会有一个 OO 云了。。。所以,掌握套路才是解决问题的关键!

好了,废话不多说,直接上教程。WordPress发布/更新文章、提交/审核评论自动清理阿里云CDN缓存

一、准备工作

①、开启 CDN 缓存

这里应该无需多言,如果存在 CDN 缓存不刷新困惑,肯定已经在 CDN 配置了文章、首页或目录缓存机制,否则也就不需要清理页面缓存了。

②、申请认证密钥

阿里云密钥管理地址:https://ak-console.aliyun.com/#/accesskey

WordPress发布/更新文章、提交/审核评论自动清理阿里云CDN缓存

申请成功后,得到如图的 AccessKey 和 AccessSecret,保存备用。

二、使用方法

①、下载代码

为方便维护,代码已提交到 github,请前往github 下载或使用 git clone 命令克隆服务器本地:

git clone https://github.com/jagerzhang/refresh-aliyun-cdn-for-wordpress.git

然后,将 refresh-aliyun-cdn-for-wordpress 文件夹,上传到 WordPress 主题目录:

②、部署代码

编辑 refresh-aliyun-cdn-for-wordpress 文件夹下的 api.php 文件,按照实际情况修改如下代码:

  //初始化
  public function __construct($accessKey,$accessSecret){
      //日志开关,1 打开,0 关闭
      $this->logSwitch    = 1;
      //清理缓存记录的日志文件,可以自行修改到其他路径
      $this->logFile      = '/tmp/cleanAlyCdnCache.log';
      //阿里云的 accessKey,请按实际填写
      $this->accessKey    = '这里填写上文申请的 AccessKey';
      //阿里云的 accessSecret,请按实际填写
      $this->accessSecret = '这里填写上文申请的 AccessSecret';
  }

 

保存后,修改 WordPress 主题函数模板文件 functions.php,在<?php 之后加入如下代码并保存:

//清理阿里云 CDN 缓存
include(dirname(__FILE__) . "/refresh-aliyun-cdn-for-wordpress/api.php");

最后,如果 PHP 开启了 opcache 功能,还需要重启下 php 确保代码正常生效。

Ps:本文代码基于阿里云官方 PHP-SDK 代码修改,官方 SDK 包含了阿里云所有接口功能代码,单由于我们只用到 CDN 清理功能,所以其他功能代码已被我精简删除。

三、验证效果

完成上述部署操作后,我们可以进行效果验证了。验证方法很直观,我们先确保 api.php 文件中已将日志打开:

$this->logSwitch = 1;

然后,我们在服务器上使用 tail -f 查看日志:

tail -f /tmp/cleanAlyCdnCache.log

最后,我们试着更新文章、发表评论或审核评论,就会看到如下效果了:WordPress发布/更新文章、提交/审核评论自动清理阿里云CDN缓存

当然这只是日志,你还可以实际修改下文章内容,然后在浏览器对比下修改前后的内容是否发生改变。

好了,关于阿里云 CDN 缓存的刷新就介绍这么多,后面有空再补充下百度云 CDN 的刷新教程,敬请期待!

57 条回应
  1. 小萝博客 2017-8-6 · 18:27

    希望再来一个又拍云的cdn刷新教程

    • 励志语录 2017-8-19 · 8:14

      这位同志说的好,大家鼓掌 :wink:

    • 橘子书 2017-8-22 · 8:25

      唔,干脆来个CDN全家桶…… :smile:

    • 时光在路上 2017-9-7 · 23:20

      哈哈哈

    • 木子 2017-9-24 · 22:14

      怎么能少了七牛云cdn

  2. 网赚 2017-8-6 · 20:07

    不错的方法

  3. 狂放 2017-8-6 · 20:36

    大佬又写文章啦,迅速火钳刘明

  4. 神情恍惚的小宁宁 2017-8-6 · 21:50

    真的是火钳刘明了! ! ! 好久木更新WP硬菜了,吃着真香。

  5. 老地儿 2017-8-7 · 1:23

    博主的手机端评论框,评论者信息填写框有问题。

  6. 枂下 2017-8-7 · 17:03

    让我这种没用cdn的怎么破,只是用了个插件缓存了下。F12也没没看到缓存的网站文件,倒是看到了css跟html的缓存。

  7. 2332 2017-8-7 · 18:45

    友情链接申请
    经常到你的博客浏览,觉得你的博客内容不错,
    网站地址:http://www.yuedutop.cn/
    日IP500
    网站名称:动感博客网
    同意的话请到本站留言,
    同时也欢迎大家到本站申请友链,首页,内页 均可

  8. 安静 2017-8-7 · 21:50

    你好,我是安静。新浪新机制api版本的同步微博代码你写了没有。

    • avatar
      Jager 2017-8-8 · 12:46

      木有时间

      • 龙笑天 2017-8-8 · 21:11

        挤出时间来! :mrgreen:

        • avatar
          Jager 2017-8-9 · 22:57

          再挤要疯了 :shock:

          • 励志语录 2017-8-19 · 8:11

            挤挤更健康 :evil:

          • 技术宅博客 2017-8-24 · 0:02

            挤一挤,总是有的! :evil: :?: 哈哈哈

  9. 技术宅 2017-8-8 · 0:05

    每天都会来到博主的博客,一天不看浑身难受,博主!爱你哟!

    • avatar
      Jager 2017-8-8 · 12:46

      :!:

    • 励志语录 2017-8-19 · 8:12

      这是病,得治 :grin:

    • 券窝 2017-8-27 · 15:16

      哈哈厉害~

  10. 亚克力 2017-8-8 · 9:02

    很不错的

  11. 在线看小说 2017-8-8 · 23:09

    你的东西,写得都很深,详细!

  12. 卢松松博客 2017-8-10 · 21:36

    解决了草根站长无法自动删除CDN缓存的困惑。

  13. 格雷弗动平衡仪 2017-8-11 · 13:45

    文章写得不错,期待你的更新。

  14. 九哥 2017-8-11 · 19:44

    收藏备用,这震动,晃眼。

  15. 明月登楼 2017-8-15 · 20:14

    阿里云的主机还是可以用的, CDN 嘛,真心很一般的感觉!

  16. yimo 2017-8-17 · 16:39

    Jager真的是..........................

    6到爆!!

  17. 夜袭 2017-8-18 · 0:41

    Jager大哥,想问下用万网虚拟机的那种,能够使用自动清理CDN缓存的这个功能?麻烦告知一下,谢谢了

    • avatar
      Jager 2017-8-20 · 18:53

      本文代码也适用于虚拟主机,只要是WordPress都可以

  18. yimo 2017-8-18 · 18:05

    如图报错,请问博主这是什么原因导致的?

    • avatar
      Jager 2017-8-26 · 11:17

      文中引用代码我搞错了,应该是:
      include(dirname(__FILE__) . "/refresh-aliyun-cdn-for-wordpress/api.php");

      • yimo 2017-8-28 · 10:56

        api路径我之前改成和目录统一的没有问题,文章编辑、发布、评论触发CDN刷新也没有问题,仅仅是在发布评论的时候会报错这两条,且并不影响评论功能,也不影响CDN刷新。如图:

  19. 晓庄博客 2017-8-22 · 12:22

    现在是一月一篇文章了 :razz:

    • avatar
      Jager 2017-8-26 · 11:17

      一个月一篇也是亚历山大。。。

      • 晓庄博客 2017-8-26 · 11:27

        挤都挤不出文章来了。 :smile:
        真的想好好统筹一篇文章,真不好写

  20. 电脑 2017-8-24 · 9:43

    越来越省事了 喜欢的可以看看的

  21. 坏哥 2017-8-26 · 0:40

    include(dirname(__FILE__) . "/aliyun-sdk/api.php"); 这个引用是不是有问题,如果refresh-aliyun-cdn-for-wordpress文件夹放在主题目录内的话,这样根本调用不到api文件,写少了一层,希望博主测试一下。

    • avatar
      Jager 2017-8-26 · 11:15

      这里应该是我写错了。。我服务器上的文件夹名称是aliyun-sdk,放到git上改成了refresh-aliyun-cdn-for-wordpress,坑了,,
      那代码应该是:
      include(dirname(__FILE__) . “/refresh-aliyun-cdn-for-wordpress/api.php”);

  22. xedgo 2017-8-26 · 18:13

    评论多了,嵌套好丑

  23. BanYuner 2017-8-30 · 0:40

    这个刷新缓存是刷新单个文章的缓存还是所有的缓存嗯

    • avatar
      Jager 2017-9-1 · 21:58

      文章有说明,只刷新相关缓存,非全部。

  24. 时光在路上 2017-9-7 · 23:19

    精品文章!给你点一万个赞!

  25. 一叶纸 2017-9-12 · 21:20

    此文鉴定为精品文章,哈哈!给你点个赞! 有时间试试阿里云的CDN怎么样 :evil:

  26. 里维斯社 2017-9-18 · 17:15

    很实用,干货

  27. cvps 2017-9-24 · 23:49

    博主,快更新百度云内容分发CDN的吧。

  28. CC 2017-9-26 · 5:46

    来个CDN 缓存 刷新的全家桶吧。

  29. Chipper 2017-10-14 · 21:24

    张哥,你这个震动的回复怎么做的啊?能分享下吗?
    另外可以交换友链么?

  30. 大喇叭 2017-10-20 · 1:41

    :grin: :grin: :grin: 你家博客速度真的快啊

  31. 安全之眼 2017-10-22 · 22:40

    博主你好,php5.6测试是成功的,但是php7.1是失败的,更新文章就错误500,能出个兼容代码吗?兼容php更高版本的

  32. Tommy Li 2018-2-13 · 9:40

    谢谢大哥,希望能把插件提交到 WordPress 官方

  33. admin 2018-4-12 · 16:07

    希望再来一个又拍云的cdn刷新教程

  34. 阿南SEO 2019-2-21 · 18:46

    博主,百度云的分享出来了吗?

  35. MAY的SEO博客 2019-6-20 · 13:31

    期待博主的“自动清理百度云CDN”文章。

  36. hanke 2019-11-4 · 16:25

    Warning: include(/www/wwwroot/www.123.com/wp-content/themes/justnews./refresh-aliyun-cdn-for-wordpress/api.php): failed to open stream: No such file or directory in /www/wwwroot/www.123.com/wp-content/themes/justnews/functions.php on line 3

    Warning: include(): Failed opening '/www/wwwroot/www.123.com/wp-content/themes/justnews./refresh-aliyun-cdn-for-wordpress/api.php' for inclusion (include_path='.:/www/server/php/71/lib/php') in /www/wwwroot/www.123.com/wp-content/themes/justnews/functions.php on line 3

    • avatar
      Jager 2019-11-22 · 17:16

      justnews. ,貌似多了个小数点

  37. 海岛小哥 2020-9-28 · 12:10

    关注好多年了

  38. Stanley 2021-12-6 · 14:46

    public function __construct($accessKey,$accessSecret)
    这一句改成
    public function __construct($accessKey=null,$accessSecret=null)