将 CDN 缓存自动刷新加入到博客发布的工作流(Hexo、WordPress)
本文已收录至 Butterfly 主题美化教程
使用了 CDN 加速源站的小伙伴可能会遇到一个问题,那就是每次发布博客到服务器后,都需要手动在腾讯云控制台进行节点的缓存刷新,很是麻烦。这里我介绍几种刷新 CDN 缓存的方法,对于 Hexo 博客,将着重介绍通过脚本的思路实现一键发布的具体流程。
方案一:腾讯云对象存储的 CDN 刷新
首先介绍官方方案。点击存储桶后可以找到 CDN 缓存刷新函数,这是一项收费服务。有兴趣的小伙伴可以试一试。
方案二:自写 JS 脚本并利用钩子实现(Hexo 方案)
思路(package.json
编写)
在接触 Hexo 博客建站的时候,你一定会知道 Hexo 三连:
1 | hexo clean && hexo g && hexo d |
命令含义参考:指令 | Hexo
上面的命令可以写进 [blog_root]/package.json
的 scripts
中,如:
1 | "scripts": { |
这样每次部署我们只需要运行 npm run publish
即可完成连击。
在完成博客部署连击后,我们可以再执行一个脚本刷新腾讯云 CDN 缓存。我打算写一个 js 脚本 auto_flush_cdn.js
用 node 运行(毕竟玩 Hexo 总会装有 Node.js 的吧)。
这样我们的部署脚本就会是这样:
1 | "scripts": { |
或者利用钩子:
1 | "scripts": { |
现在的问题就是 auto_flush_cdn.js
该如何写。
使用腾讯云 SDK 进行开发
登录腾讯云后,打开云产品>云 API:
我们要使用腾讯云 SDK,需要先安装依赖:
这里我就安装在博客目录了:博客下新建终端运行命令 npm install tencentcloud-sdk-nodejs-cdn --save
提示
实践中遇到找不到模块的问题,安装好依赖后记得重启终端、VSCode 甚至电脑。如果不行请另外搜索解决方案。
然后找到对应的 API,按照平台指示的说明填写好参数,充分利用其诊断工具进行在线调试。(一般不会出什么问题)
没有问题的话我们就可以把平台代码复制下来了,在代码中改改 API ID 和 API KEY 参数即可。
注意
此处 API ID 和 API KEY 参数填写仅供演示。为了安全起见,建议不要在代码中写入任何的密匙。详情看下一小节。
运行一下我们的脚本文件尝试一下:
没有返回错误信息,看了看控制台确实进行了刷新。如果出现问题,可以把 RequestId 粘贴到 API Doctor(使用诊断) - 云 API - 控制台 (tencent.com) 进行诊断。
附控制台看刷新纪录的方法,打开内容分发网络找刷新预热的操作记录:
安全使用 API KEY
在使用腾讯云 SDK 进行开发时,不可避免的需要传入 API KEY,但是把密匙硬写在代码中是不安全的。
注意
代码泄露可能会导致 SecretId 和 SecretKey 泄露,并威胁账号下所有资源的安全性。建议不要在代码中使用持久 SecretId 和 SecretKey。
——腾讯云
这里介绍的是通过环境变量读取 SecretId 和 SecretKey 方案。
Windows
首先在自己的系统中配置环境变量,把自己的 SecretId 和 SecretKey 填进去:
我们可以写一个 demo 测试一下:
新建 test_env.js
,写入两行代码:
1 | var Key = process.env.TENCENT_API_SECRETID; |
运行脚本:
1 | node <your test_env.js> |
若成功输出即配置成功。
注意
环境变量配置好后,记得重启你的终端、VSCode(如果你使用 VSCode 的终端)。太玄学的话,你懂的,重启电脑。
在你刚刚从腾讯云复制下来的代码文件中做以下修改:
1 | const tencentcloud = require("tencentcloud-sdk-nodejs-cdn"); |
python 中使用环境变量的方法:
1 | import os |
Linux
Linux 中需要将环境变量持久化,方法有很多,这里我就演示其中一种。
1 | vim /etc/environment |
添加:
1 | export TENCENT_API_SECRETID=AKIDvhxxxxxxxxxxxwP |
然后手动执行命令使其生效:
1 | source /etc/environment |
可以执行以下命令查看环境变量:
1 | export |
这种方法:
- 生效时间:新开终端生效,或者手动
source /etc/environment
生效 - 生效期限:永久有效
- 生效范围:对所有用户有效
脚本
最后的脚本文件文件:
1 | // Depends on tencentcloud-sdk-nodejs version 4.0.3 or higher |
方案三:WordPress 解决方案
在 functions.php
下添加自动刷新腾讯云控制台 CDN 缓存的操作。
1 | /* 需要填写你的密钥,访问 https://console.qcloud.com/capi 获取 SecretId 及 $secretKey */ |
本文参考
- 云 API 使用 API Explorer-快速入门-文档中心-腾讯云 (tencent.com)
- Node.js-SDK 中心-腾讯云 (tencent.com)
- npm 安装包的路径在哪里npm install 在哪里输入兮动人的博客-CSDN 博客
- npm 之安装、更新、卸载本地安装包_samllplum 的博客-CSDN 博客
- wordpress 腾讯 CDN 缓存实现发布/更新文章/评论自动刷新-轻刻年轮 (ly522.com)
- scripts | npm Docs (npmjs.com)
- npm scripts 使用指南 - 阮一峰的网络日志 (ruanyifeng.com)
- 云 API 云 API 密钥安全方案推荐-开发指南-文档中心-腾讯云 (tencent.com)
- 操作系统:Linux 环境变量配置的 6 种方法_export path 后 需要执行什么-CSDN博客
- Python 中的环境变量 – 读取、打印、设置 – 码微 (mwell.tech)