CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。

配置腾讯云 CDN

基础配置如下

缓存配置,用于缓存博客静态资源,文本如下,方便复制

/usr/themes/handsome/usr/img
/usr/themes/handsome/assets
/usr/uploads
jpg;jpeg;png;bmp;gif;psd;ico;tga;imb;tiff;svg;woff;ttf;woff2
css;js;txt;doc;wri;docs;dot;xml;log;bat;csv
php;jsp;asp;aspx


视情况配置用量封顶

建议配置 IP 访问限频,原本设置的20QPS,表情包点开时QPS太高,导致加载不全,于是调到了40QPS

建议开启 https 配置

配置腾讯 OSS 使用 CDN

如果未使用 OSS 跳过此步

建议开启 Webp 自适应,加速图片访问

GitHub Actions 配置 CDN 证书自动更新

项目地址

使用方式

默认每月1号凌晨2点自动执行

Fork 上面的项目,在项目里的 Github Actions Secrets 配置如下变量

  • ACME_DNS_TYPE: Acme 的 dns 类型,你可以选择你的 dns 类型并配置环境变量密钥
  • ACME_DOMAIN: 你的顶级域名,例如:monlor.com,自动申请证书 monlor.com/*.monlor.com
  • SECRETID: 腾讯云 Secret Id,申请地址:https://console.cloud.tencent.com/cam/capi
  • SECRETKEY: 腾讯云 Secret Key
  • CDN_DOMAIN: CDN 域名,多个域名用逗号分隔,例如:www.monlor.com,cdn.monlor.com
  • BARK_HOST: Bark 消息通知 Host,可选,不配置则使用官方默认服务器
  • BARK_KEY: Bark 消息通知 Key

关于消息通知

BARK 的变量用于消息通知,如果不需要消息通知,删除文件.github/workflows/update-cert.yml里面的 Notification 部分,信息如下

- name: Notification
        uses: monlor/bark-action@v3
        if: always()
        with:
          host: ${{ secrets.BARK_HOST}} # not required
          key: ${{ secrets.BARK_KEY }}   # Your secret key
          title: Github Actions
          body: 'Your tencent cdn certs update ${{ job.status }}!'
          isArchive: 1
          url: 'github://github.com/${{ github.repository }}'
          group: Github
          icon: https://github.githubassets.com/images/modules/logos_page/GitHub-Mark.png
          copy: ${{ steps.meta.outputs.tags }}

配置示例

以下是使用腾讯云 Dnspod 来申请证书的示例,添加完变量后,更新任务不会自动触发,你可以打一个v开头的tag来触发,比如v0.0.1,就可以测试任务执行的情况了

ACME_DNS_TYPE=dns_dp
DP_Id=xxx
DP_Key=xxx
ACME_DOMAIN=monlor.com
CDN_DOMAIN=www.monlor.com,cdn.monlor.com
SECRETID=xxx
SECRETKEY=xxx

查看项目里 Actions 是否运行成功

到此已经全部配置完成,Enjoy~

动态接口缓存

首页缓存

最终因为种种缺点,我还是选择了关闭首页缓存

优点

  • 让首页访问速度从500毫秒+缩短到100毫秒以内,实际可能50ms以内,这也是最大的好处了

缺点

  • 首页页面加载和登陆路径相同,加速后会导致无法登陆
  • 白天/夜间模式切换有问题,在夜间模式会闪一下白,可能是缓存的白天的页面
  • 文章无法及时刷新,这个对于博客来说其实还好,根据你设置的缓存时间来刷新
  • 音乐播放器如果设置随机播放会有问题

音乐播放器缓存

比如歌词,专辑图这些信息不会经常变动,缓存很有必要,提升一点是一点

优点

  • 接口速度从100+毫秒缩短到10+毫秒

缺点

  • 设置随机播放需要访问完所有的歌曲或者将所有歌曲添加预热才能100%走缓存,所以我现在关掉了随机播放

配置

添加缓存键规则

/action/handsome-meting-api
server;type;id

16509914531453

添加缓存过期配置,这里一定要配置强制缓存,缓存时间可以稍微长一些,数据不需要经常变动
16509914984835

感谢

最后修改:2022 年 05 月 17 日
如果觉得我的文章对你有用,请我喝杯咖啡吧☕️~