惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

有赞技术团队
有赞技术团队
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
P
Palo Alto Networks Blog
C
Cisco Blogs
The Hacker News
The Hacker News
T
Threatpost
S
Schneier on Security
K
Kaspersky official blog
Spread Privacy
Spread Privacy
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
NISL@THU
NISL@THU
量子位
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Google DeepMind News
Google DeepMind News
Security Latest
Security Latest
博客园 - 司徒正美
云风的 BLOG
云风的 BLOG
博客园 - 叶小钗
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
News and Events Feed by Topic
爱范儿
爱范儿
P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
Project Zero
Project Zero
Application and Cybersecurity Blog
Application and Cybersecurity Blog
Cisco Talos Blog
Cisco Talos Blog
GbyAI
GbyAI
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Apple Machine Learning Research
Apple Machine Learning Research
T
Tenable Blog
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
Vulnerabilities – Threatpost
Forbes - Security
Forbes - Security
博客园 - 三生石上(FineUI控件)
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
V
V2EX
Webroot Blog
Webroot Blog
The Register - Security
The Register - Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Blog — PlanetScale
Blog — PlanetScale
M
MIT News - Artificial intelligence
Scott Helme
Scott Helme
Simon Willison's Weblog
Simon Willison's Weblog
L
LangChain Blog
W
WeLiveSecurity
Cloudbric
Cloudbric

短巷与雨

用免费域名,搭建一个自己的临时邮箱服务保护您的真实邮箱地址 PakePlus打包程序的使用体验 备案 Vercel & Cloudflare 项目分享 Linux日志查找 IPV6.ARPA域名申请并托管到Cloudflare 再见,普莫雍措 CNB迁移和UI定制 ZFile工具 CNB远程部署和EdgeOne Pages 备案 CNB创建知识库 小工具 备案 备案 备案 SSH免密登录 UV和Mamba包管理工具 消息摘要(Message Digest)
CNB刷新EO缓存和插件化
Hudi(唱唱反调) · 2025-08-30 · via 短巷与雨

​ 使用了EO以后,写文章或者博客UI更新以后,刷新缓存不是那么方便了。我看CNB只有实现CDN刷新的插件。就想着能不能提交变更以后自动刷新,问了LiuShen,才想起肯定有API能够实现刷新。于是就去翻了翻官方文档,果不其然,找了好一些方式可以去实现EO的缓存刷新,这下子整个更新就方便多。其中找到了两个还算比较简单的方法,一是使用腾讯云自带的TCCLI,二是自己通过API编写刷新脚本。

一、使用ssh+shell脚本

​ 这个方法就是在提交代码后,通过CNB的流水线去远程登录服务器,并在服务器里执行刷新EdgeOne的shell脚本,来完成缓存刷新的。

1、获取腾讯云的API密钥

1
https://console.cloud.tencent.com/cam/capi

2、获取shell脚本信息

当然linux系统自带Python的解析器,也可以编写Python的脚本,这里就是用shell脚本。这里也不编写了,因为不是太熟悉🤣直接去直接去API Explorer 找就行了,当然这里还有SDK的示例代码,需要的可以看看。

API Explorer中找到【边缘安全加速平台TEO】。在【示例代码】->【HTTP Request】中找到shell拷贝就行了。,shell获取步骤如下:

image-20250830140031091

3、创建刷新EO的shell脚本

把上面获取的脚本放在服务器的指定目录下,例如/root/bash/目录下创建flush.sh。脚本内容就是上面的获取到的。

注意:需要替换secret_idsecret_key。还需要替换payload请求体的内容如下:

payload=”{"ZoneId":"zone-xxxxxxxxxxx”,"Type":"purge_host","Method":"invalidate","Targets":["www.hudi.space\"]}

ZoneId: 站点ID。在EdgeOne的控制台可以看到。

Type:节点缓存清除类型,purge_host 表示刷新整个域名。

Method:节点缓存清除方法,invalidate仅刷新目录下产生了更新的资源。

Targets:需清除缓存的资源列表。

更多的配置选项看这里:https://cloud.tencent.com/document/product/1552/80703

4、创建cnb.yml流水线。

这里使用到了cnb的ssh插件。插件地址,点这里。需要了解详细配置的话可以看看

1
2
3
4
5
6
7
8
9
10
11
12
13
master: #分支名
push:
- stages:
- name: 刷新缓存的任务
image: tencentcom/ssh
settings:
host:
- x.x.x.x #服务器的IP地址
username: #目标主机用户名
password: #木边主机密码
port: 22
script:
- sh /root/bash/flush.sh #需要执行的脚本

完成上述✅提交代码到cnb仓库,就可以自动实现EdgeOne缓存的刷新了。

二、腾讯云命令行工具

TCCLI:通过腾讯云命令行工具,您可以快速轻松的调用腾讯云 API来管理您的腾讯云资源。

官方文档:https://cloud.tencent.com/document/product/440

同样这个也是CNB的一个插件,插件地址,点这里

1、确定刷新EO的TCCLI代码

由于该插件只给出了cvm创建实例tsf部署容器应用两个案例,没有我们需要的TEO的案例,所以我们同样去API Explorer 找。找到CLI代码如下:

1
tccli teo CreatePurgeTask --cli-unfold-argument

详细的子命令如下:

1
tccli teo CreatePurgeTask  --cli-unfold-argument --ZoneId "zone-XXXXX" --Type "purge_host" --Method "invalidate" --Targets "www.hudi.space"

可以通过Python去安装tccli,但是注意Python的版本需要大于2.7。

详细tccli安装步骤看一下这里:https://github.com/TencentCloud/tencentcloud-cli。

2、构建CNB流水线

1
2
3
4
5
6
7
8
9
10
11
master:
push:
# 引入 env.yml,导入其声明的环境变量
- imports: https://xxx/env.yml #引用密钥仓库的信息。
stages:
- name: 刷新EO
image: tencentcom/tencentcloud-cli
script: |
tccli configure set secretId $T_SECRET_ID
tccli configure set secretKey $T_SECRET_KEY
tccli teo CreatePurgeTask --cli-unfold-argument --ZoneId "zone-XXXXX" --Type "purge_host" --Method "invalidate" --Targets "www.hudi.space"

同样需要获取腾讯云的API密钥,并把密钥保存在密钥仓库中这里省略。

使用tccli去刷新EO的缓存只需要简单的两步,是不是很简单。

通过脚本或者是命令行刷新缓存成功后会有如下反馈:

image-20250830161657454

三、插件化

有的时候我们会觉得直接在服务器使用bash脚本不好,因为它直接把腾讯云的API密钥暴露在外面了。所以可以将我们写的脚本直接插件化,在通过CNB的密钥仓库去保存密钥,传值到插件中可能更加稳妥一些。

在云原生构建中,一个插件就是一个 Docker 镜像。 下面以shell脚本制作插件为例。

1、创建空的CNB仓库

用来构建流水线和保存docker镜像的制品。

2、容器传参

首先要了解的是在cnb.yml流水线中,所设置的参数需要设置在settings下,如下

1
2
3
4
5
6
7
8
9
main:
push:
- stages:
- name: CNB自定义插件刷新缓存
image: docker.cnb.cool/hudi22/teo_refresh/refresh:1.0
imports: https://cnb.cool/hudi22/hudikey/-/blob/main/cdn_env.yml
settings:
SecretId: $SecretId
SecretKey: $SecretKey

这些入参将会以环境变量的形式传给容器,不同的是,他们将会变成大写且辅以 PLUGIN_ 前缀。

SecretId和SecretKey参数将转化为如下环境变量:PLUGIN_SECRETID和PLUGIN_SECRETKEY。

3、编写容器的入口文件

这里的脚本名字为entrypoint.sh,或者是自己定义,脚本信息如下这里:https://cnb.cool/hudi22/teo_refresh/-/blob/main/entrypoint.sh

注意修改payload里面的ZoneId值,和其他请求体信息。

4、编写Dockerfile文件如下

1
2
3
4
5
FROM ubuntu:24.04
RUN apt-get update && apt-get install -y openssl curl
ADD entrypoint.sh /bin/
RUN chmod +x /bin/entrypoint.sh
ENTRYPOINT /bin/entrypoint.sh

5、构建docker镜像

1
2
docker build -t docker.cnb.cool/hudi22/teo_refresh/refresh:1.0 .
docker push docker.cnb.cool/hudi22/teo_refresh/refresh:1.0

docker制品:docker.cnb.cool/hudi22/teo_refresh/refresh:1.0 配置cnb.yml以后可以直接使用。

6、引用插件

只要在cnb.yml流水线中引用打包的镜像就行了,就能实现通过自定义插件去刷新EO缓存了。使用流水线刷新EO缓存的时候注意查看构建日志,看工作流是否成功。

当然还可以编写其他编程语言的脚本,可以看API Explorer 这个。

四、总结

我个人比较喜欢tccli命令刷新缓存因为直接配置流水线使用插件就好了🤣,其他的配置感觉过于繁琐了。自从用了腾讯云的产品以后感觉自己的站点访问速度快了好多,更新也方便了一些。最近也是在看这些文档、插件、api的使用,可能还会写一些相关的文章。