前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js + GitHub Actions 自动刷新 CDN

Node.js + GitHub Actions 自动刷新 CDN

作者头像
Cell
发布2022-09-21 09:01:11
8.3K0
发布2022-09-21 09:01:11
举报
文章被收录于专栏:Cell的前端专栏

問題

腾讯云云函数从 2022 年 6 月 1 日开始收费了,差不多每个月 12 块,对于可能几个月都用不上一次云函数刷新缓存的人来说,有点太贵了。 使用 Node.js 和 GitHub Actions 刷新 CDN 的方式,可以节省不少钱。

安装依赖

代码语言:javascript
复制
npm install qcloud-cdn-node-sdk

编写脚本

代码语言:javascript
复制
vim .scripts/qcloudcdn.js

代码语言:javascript
复制
/**
 * Refresh Qcloud CDN cache
 * @command `node qcloudcdn.js $SECRET_ID $SECRET_KEY` 
 */
const qcloudSDK = require('qcloud-cdn-node-sdk');

// Get the config from https://console.qcloud.com/capi
qcloudSDK.config({
  secretId: process?.argv[2],
  secretKey: process?.argv[3]
})

qcloudSDK.request('RefreshCdnDir', {
  // See https://cloud.tencent.com/document/api/228/3947
  'dirs.0': 'https://lruihao.cn/'
}, (res) => {
  res.code && console.log(res)
})

增加快捷指令

打开 package.json 增加 scripts:

代码语言:javascript
复制
{
  "scripts": {
    "qcloudcdn": "node .scripts/qcloudcdn.js $SECRET_ID $SECRET_KEY"
  }
}

运行方式:

代码语言:javascript
复制
SECRET_ID=<secretId> SECRET_KEY=<secretKey> npm run qcloudcdn

Mac OS 环境变量配置(可选)

代码语言:javascript
复制
vim ~/.bash_profile

代码语言:javascript
复制
# Qcloud secret key-value
export SECRET_ID=<secretId>
export SECRET_KEY=<secretKey>

代码语言:javascript
复制
source ~/.bash_profile

然后,在本地可简化指令为 npm run qcloudcdn 或者 yarn qcloudcdn。等同于 SECRET_ID=SECRET_ID SECRET_KEY=SECRET_KEY npm run qcloudcdn

配置 GitHub Actions

在原有 GitHub Actions 中部署后增加一个步骤:

代码语言:javascript
复制
- name: Refresh Qcloud CDN cache
  env:
    SECRET_ID: ${{ secrets.SECRET_ID }}
    SECRET_KEY: ${{ secrets.SECRET_KEY }}
  run: npm run qcloudcdn

在仓库 Settings > Secrets > Actions 中增加两个 Secret: SECRET_IDSECRET_KEY,原来有配置过的就不用了,比如,我原来的叫 COS_SECRET_IDCOS_SECRET_ID,那修改上面配置 env 中的变量名即可。

最后上传代码,以后更新仓库时就会自动刷新 CDN 缓存了。

参考资料

本方案使用的旧的 API 请求方式,如果失效,可以参考新的 API,见 SDK 中心

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-08-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装依赖
  • 编写脚本
  • 增加快捷指令
  • 配置 GitHub Actions
  • 参考资料
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档