使用过 CDN 的朋友多少都有过文章更新无法自动删除 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 的刷新教程,敬请期待!