使用过 CDN 的朋友多少都有过文章更新无法自动删除 CDN 缓存的困惑,针对这个痛点,张戈博客也是多次发布相关教程,为广大草根站长朋友们解惑,比如:
WordPress 发布/更新文章、提交/审核评论自动清理腾讯云 CDN 缓存
但是,仍然不能满足博友们的诉求,于是很多朋友留言、邮件给我,要我帮忙写一个 XX 云 CDN 的自动清理功能之类的请求,我一般都是给出了敬请期待之类答复。
由于本人日常工作非常繁忙,所以只能一再跳票,今天难得得空,正好研究下阿里云 CDN 的缓存清理。
实际上,这些 XX 云 CDN 基本都有一些 SDK 接口文档,有点基础的朋友多花点时间撸一撸都能自己写出来,再说张戈博客之前还分享了好几篇类似教程,依葫芦画瓢总会吧?总不能因为有个 XX 云就要写一个 XX 云 CDN 清理教程吧?写完了 XX 云可能很快又会有一个 OO 云了。。。所以,掌握套路才是解决问题的关键!
一、准备工作
①、开启 CDN 缓存
这里应该无需多言,如果存在 CDN 缓存不刷新困惑,肯定已经在 CDN 配置了文章、首页或目录缓存机制,否则也就不需要清理页面缓存了。
②、申请认证密钥
阿里云密钥管理地址:https://ak-console.aliyun.com/#/accesskey
申请成功后,得到如图的 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
最后,我们试着更新文章、发表评论或审核评论,就会看到如下效果了:
当然这只是日志,你还可以实际修改下文章内容,然后在浏览器对比下修改前后的内容是否发生改变。
好了,关于阿里云 CDN 缓存的刷新就介绍这么多,后面有空再补充下百度云 CDN 的刷新教程,敬请期待!
希望再来一个又拍云的cdn刷新教程
这位同志说的好,大家鼓掌 :wink:
唔,干脆来个CDN全家桶…… :smile:
哈哈哈
怎么能少了七牛云cdn
不错的方法
大佬又写文章啦,迅速火钳刘明
真的是火钳刘明了! ! ! 好久木更新WP硬菜了,吃着真香。
博主的手机端评论框,评论者信息填写框有问题。
让我这种没用cdn的怎么破,只是用了个插件缓存了下。F12也没没看到缓存的网站文件,倒是看到了css跟html的缓存。
友情链接申请
经常到你的博客浏览,觉得你的博客内容不错,
网站地址:http://www.yuedutop.cn/
日IP500
网站名称:动感博客网
同意的话请到本站留言,
同时也欢迎大家到本站申请友链,首页,内页 均可
你好,我是安静。新浪新机制api版本的同步微博代码你写了没有。
木有时间
挤出时间来! :mrgreen:
再挤要疯了 :shock:
挤挤更健康 :evil:
挤一挤,总是有的! :evil: :?: 哈哈哈
每天都会来到博主的博客,一天不看浑身难受,博主!爱你哟!
:!:
这是病,得治 :grin:
哈哈厉害~
很不错的
你的东西,写得都很深,详细!
解决了草根站长无法自动删除CDN缓存的困惑。
文章写得不错,期待你的更新。
收藏备用,这震动,晃眼。
阿里云的主机还是可以用的, CDN 嘛,真心很一般的感觉!
Jager真的是..........................
6到爆!!
Jager大哥,想问下用万网虚拟机的那种,能够使用自动清理CDN缓存的这个功能?麻烦告知一下,谢谢了
本文代码也适用于虚拟主机,只要是WordPress都可以
如图报错,请问博主这是什么原因导致的?
文中引用代码我搞错了,应该是:
include(dirname(__FILE__) . "/refresh-aliyun-cdn-for-wordpress/api.php");
api路径我之前改成和目录统一的没有问题,文章编辑、发布、评论触发CDN刷新也没有问题,仅仅是在发布评论的时候会报错这两条,且并不影响评论功能,也不影响CDN刷新。如图:
现在是一月一篇文章了 :razz:
一个月一篇也是亚历山大。。。
挤都挤不出文章来了。 :smile:
真的想好好统筹一篇文章,真不好写
越来越省事了 喜欢的可以看看的
include(dirname(__FILE__) . "/aliyun-sdk/api.php"); 这个引用是不是有问题,如果refresh-aliyun-cdn-for-wordpress文件夹放在主题目录内的话,这样根本调用不到api文件,写少了一层,希望博主测试一下。
这里应该是我写错了。。我服务器上的文件夹名称是aliyun-sdk,放到git上改成了refresh-aliyun-cdn-for-wordpress,坑了,,
那代码应该是:
include(dirname(__FILE__) . “/refresh-aliyun-cdn-for-wordpress/api.php”);
评论多了,嵌套好丑
这个刷新缓存是刷新单个文章的缓存还是所有的缓存嗯
文章有说明,只刷新相关缓存,非全部。
精品文章!给你点一万个赞!
此文鉴定为精品文章,哈哈!给你点个赞! 有时间试试阿里云的CDN怎么样 :evil:
很实用,干货
博主,快更新百度云内容分发CDN的吧。
来个CDN 缓存 刷新的全家桶吧。
张哥,你这个震动的回复怎么做的啊?能分享下吗?
另外可以交换友链么?
:grin: :grin: :grin: 你家博客速度真的快啊
博主你好,php5.6测试是成功的,但是php7.1是失败的,更新文章就错误500,能出个兼容代码吗?兼容php更高版本的
谢谢大哥,希望能把插件提交到 WordPress 官方
希望再来一个又拍云的cdn刷新教程
博主,百度云的分享出来了吗?
期待博主的“自动清理百度云CDN”文章。
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
justnews. ,貌似多了个小数点
关注好多年了
public function __construct($accessKey,$accessSecret)
这一句改成
public function __construct($accessKey=null,$accessSecret=null)