从图床到 Astro 博客,完整记录 EdgeOne 的域名接入、回源设置、缓存规则、验证方法和常见故障处理。
腾讯云 EdgeOne 加速图床与博客全记录

这篇文章记录如何以香港轻量服务器为源站,通过腾讯云 EdgeOne 免费版同时加速图床和 Astro 博客。重点不在“打开 CDN”这一个开关,而在于如何划清静态资源、HTML 与 API 的缓存边界。
一、背景与架构
整个方案让 EdgeOne 位于访客与香港源站之间。浏览器优先从边缘节点取得可以长期复用的静态资源;HTML、RSS 和 API 则保持实时回源,避免发布新内容后仍看到旧页面。
| 项目 | 说明 |
|---|---|
| 服务器 | 腾讯云香港轻量应用服务器,2 核 4G、6M 带宽;本文以 203.0.113.10 代替真实 IP |
| 图床域名 | images.example.com,后端为 CloudFlare-ImgBed / Zipline 与对象存储 |
| 博客域名 | blog.demius.tech,Astro 静态构建、自研主题 |
| DNS | 腾讯云 DNSPod |
| 加速服务 | EdgeOne 免费版,加速区域为“全球(不含中国大陆)” |
最终访问链路
这种结构的核心收益是把域名和源站解耦。以后更换服务器,只需要修改 EdgeOne 的源站地址,不必批量改文章中的资源链接。
二、图床配置流程
2.1 添加站点与域名验证
- 在 EdgeOne 控制台选择“添加站点”,输入图床域名所属的根域名(示例为
example.com)。 - 加速区域选择“全球(不含中国大陆)”,接入模式选择 CNAME 接入。
- 按控制台提示,在 DNSPod 添加 TXT 记录完成域名归属验证。
2.2 添加图床加速域名
| 配置项 | 值 |
|---|---|
| 加速域名 | images.example.com |
| 源站地址 | 203.0.113.10(脱敏示例) |
| 回源协议 | HTTPS |
| 回源端口 | 443 |
| 回源 HOST 头 | 使用加速域名,即 images.example.com |
2.3 DNS 解析与证书
- 删除 DNSPod 中原有的同名 A 记录。
- 添加 CNAME 记录,指向 EdgeOne 提供的接入地址。
- 在 EdgeOne 中为
images.example.com申请并启用免费 SSL 证书。 - 等待解析生效,再分别测试 HTTP 跳转和 HTTPS 访问。
2.4 图床缓存规则
匹配条件
- HOST等于
images.example.com - 文件后缀属于
jpg,png,webp,gif,ico,mp4
执行操作
- 节点缓存 TTL=
30 天(强制缓存) - 浏览器缓存 TTL=
30 天
三、博客配置流程(Astro)
博客的域名接入、源站协议和证书配置与图床相同,但缓存规则不能照搬。Astro 静态构建会给打包资源生成带内容哈希的文件名,这是可以放心长期缓存的关键。
3.1 Astro 静态资源的特点
| 资源类型 | 构建后的典型文件名 | 路径 |
|---|---|---|
| CSS | BaseLayout.a3f2b1c9.css | /_astro/ |
| JavaScript | hoisted.d8e7f6a5.js | /_astro/ |
| 字体 | Inter.4b2c1d0e.woff2 | /_astro/ |
| Astro Image | cover.b9a8c7d6.webp | /_astro/ |
| HTML 页面 | index.html,文件名不带内容哈希 | / 或内容目录 |
3.2 Astro 构建资源规则
匹配条件
- HOST等于
blog.demius.tech - URL path正则匹配
.*/_astro/.*
执行操作
- 节点缓存 TTL=
365 天(强制缓存) - 浏览器缓存 TTL=
365 天
EdgeOne 的路径条件只有“等于、不等于、正则匹配、正则不匹配”等运算符时,可以使用 .*/_astro/.* 匹配路径中包含 /_astro/ 的请求。
3.3 非哈希静态资源兜底规则
匹配条件
- HOST等于
blog.demius.tech - 文件后缀属于
ico,svg,png,jpg,jpeg,gif,webp,woff,woff2,ttf,otf - URL path正则不匹配
.*/_astro/.*
执行操作
- 节点缓存 TTL=
7 天(强制缓存) - 浏览器缓存 TTL=
7 天
3.4 HTML、RSS 与 API 不做强制缓存
首页 /、文章 /posts/xxx/、RSS 和 API 不应命中上述规则,让它们按源站响应或 EdgeOne 默认策略实时回源。这样部署完成后,访客访问相同 URL 也能立即取得新版 HTML。
这里需要区分两个阶段:Git 推送之后仍要等待服务器拉取、安装依赖、构建和发布;发布完成后,HTML 才应该实时可见。CDN 不缓存 HTML,并不能消除构建部署耗时。
四、完整规则体系
| 规则名称 | 匹配范围 | 缓存 TTL |
|---|---|---|
Img-Cache-30d | images.example.com + 指定媒体后缀 | 30 天 |
Blog-Astro-Cache | blog.demius.tech + .*/_astro/.* | 365 天 |
Blog-Static-Fallback | 博客静态后缀,并排除 /_astro/ | 7 天 |
| 默认策略 | HTML、RSS、API 等动态或实时内容 | 不强制缓存 |
五、验证与测试
5.1 验证图床缓存
- 打开自己的图床域名(示例:
https://images.example.com),确认首页和资源 URL 均可正常访问。 - 上传一张测试图片,并在浏览器开发者工具的 Network 面板找到该请求。
- 首次请求可能看到
EO-Cache-Status: MISS,再次请求应逐渐变为HIT。 - 检查图片响应是否具有预期的
Cache-Control。
也可以直接使用命令行检查响应头:
curl -I "https://images.example.com/你的测试图片.webp"
5.2 验证博客构建资源
在页面源码或 Network 面板中找到一个 /_astro/ 资源,再检查两次响应:
curl -I "https://blog.demius.tech/_astro/实际构建文件.css"
预期现象:
- 第一次可能是
EO-Cache-Status: MISS,之后变为HIT; Cache-Control的最大有效期符合一年缓存设置;- 发布新版本后,HTML 引用一个新的哈希 URL,不依赖清除旧资源缓存。
5.3 验证 HTML 实时更新
curl -I "https://blog.demius.tech/posts/某篇文章/"
HTML 不应该被长期强制缓存。若响应持续返回较大的 Age 且 EO-Cache-Status: HIT,需要检查是否存在覆盖全站的缓存规则。
六、踩坑记录与解决方案
全站强制缓存后,后台看不到新文件或删除无效
现象
图床上传成功后文件列表不更新,删除文件后刷新又重新出现。
原因
只按图床域名配置了 30 天强制缓存,动态 API 响应也被边缘节点缓存。
解决方案
- 给规则增加文件后缀条件,只缓存图片和明确需要缓存的媒体。
- 清除此前错误规则产生的 EdgeOne 缓存。
- 使用无痕窗口或 curl 重新验证 API 与静态资源响应。
CNAME 与 A 记录冲突
现象
添加 EdgeOne 后 DNS 解析迟迟不生效,访问结果不稳定。
原因
DNSPod 中同一个主机记录同时存在 A 和 CNAME,解析关系互相冲突。
解决方案
- 删除同名 A 记录,只保留 EdgeOne 要求的 CNAME。
- 等待 DNS TTL 到期后重新查询解析结果。
HTTPS 回源失败
现象
回源协议选择 HTTPS 后站点无法打开,连接长时间没有响应。
原因
源站证书、TLS 协议、SNI、端口或 HTTP/2 配置与回源请求不兼容。
解决方案
- 确认源站 443 端口可用,证书有效且覆盖回源 HOST。
- 核对回源 HOST 是否为实际站点域名,而不是脱敏示例 IP。
- 可临时切换 HTTP / 80 定位问题,但生产环境优先修复 HTTPS 回源。
路径条件没有“包含”运算符
现象
需要匹配 /_astro/ 下的全部文件,但控制台没有“包含”选项。
原因
当前规则运算符只提供等于、不等于和正则匹配等模式。
解决方案
- 选择 URL path 的正则匹配。
- 使用 .*/_astro/.* 匹配路径中包含 /_astro/ 的请求。
- 保存后用实际构建资源 URL 验证规则是否命中。
规则重叠导致 /_astro/ 图片缓存时间缩短
现象
一年缓存规则和七天静态文件规则同时存在,但 /_astro/ 图片最终只有七天 TTL。
原因
同一请求命中多条规则,靠后的兜底规则覆盖了前面更精确的设置。
解决方案
- 在静态文件兜底规则中增加 URL path 正则不匹配 .*/_astro/.*。
- 让哈希资源规则与公共静态文件规则成为互斥集合。
上传成功但文件列表暂时不同步
现象
文件 URL 已经可以访问,图床后台列表却没有马上出现该文件。
原因
如果图床使用最终一致的 KV 存储索引,列表更新可能存在延迟或单次写入失败。
解决方案
- 使用图床提供的重建索引功能。
- 检查上传日志和索引写入结果,而不是反复刷新缓存。
- 对强一致性要求较高时,考虑使用关系型数据库保存文件索引。
大体积视频作为首页背景导致加载缓慢
现象
数十 MB 的背景视频首屏加载时间很长,在弱网下可能无法完整播放。
原因
大文件首屏下载成本高,免费套餐的节点能力、回源带宽和访客网络都会放大等待时间。
解决方案
- 首页优先使用经过压缩的 WebP 或 AVIF 静态图。
- 必须使用视频时,准备海报图并延迟加载视频资源。
- 较长视频交给专业视频平台分发,并以嵌入方式展示。
图床管理后台操作缓慢
现象
后台页面打开慢,上传、列表查询和删除操作存在明显等待。
原因
管理请求需要实时回源,性能受源站带宽、节点路线和接口实现共同影响。
解决方案
- 不要缓存后台 HTML 和 API,先保证数据一致。
- 通过 PicGo 等本地客户端配合 API Token 上传,减少后台页面依赖。
- 持续观察源站响应时间,再决定是否调整线路或迁移服务。
七、更换服务器与更新主题
7.1 更换源站服务器
因为公开 URL 与源站 IP 已经解耦,迁移时不需要修改文章中的图床和博客链接:
| 步骤 | 操作 |
|---|---|
| 1 | 将网站文件、数据库与必要配置迁移到新服务器 |
| 2 | 在新服务器完成 1Panel、Nginx、域名和 SSL 配置 |
| 3 | 先绕过 CDN 验证新源站内容与 HTTPS 是否正常 |
| 4 | 在 EdgeOne 中将源站地址切换为新服务器 IP |
| 5 | 清理需要立即失效的节点缓存并验证线上访问 |
7.2 更新 Astro 主题
Astro 构建资源带有内容哈希,常规主题更新不需要清理 /_astro/ 的旧缓存:
- 修改主题或文章内容。
- 执行
pnpm build生成静态站点。 - 将新构建产物发布到源站。
- 新 HTML 引用新的哈希资源 URL,EdgeOne 首次拉取后即可缓存。
八、总结与建议
核心原则
- EdgeOne 只长期缓存明确的静态资源,不对 HTML、后台和 API 做全站强制缓存。
- 使用 CNAME 接入时,删除同名冲突 A 记录。
- HTTPS / 443 回源优先,并确保回源 HOST 能匹配源站虚拟主机。
- 按文件后缀或路径正则精细划分缓存范围。
- 多条规则共存时,通过排除条件避免交集和顺序覆盖。
- 发布前主动检查并脱敏源站与管理信息。
Astro 博客的优势
- 构建资源自动添加内容哈希,适合一年不可变缓存。
- 新版本引用新 URL,不必为了 CSS 和 JavaScript 更新而全站清缓存。
- HTML 保持实时回源,部署完成后新文章可以立即被访问。
- 配合
/_astro/精确规则和公共静态文件兜底规则,既快又容易维护。
安全与成本控制
- 对图床配置 Referer 防盗链时保留必要的空 Referer 或可信来源策略,避免误伤正常访问。
- 设置用量告警和套餐封顶策略,及时发现异常流量。
- 速率限制先观察再拦截,避免搜索引擎或正常访客被错误限制。
- 源站防火墙尽量只开放必要端口;是否限制为 EdgeOne 回源 IP,应以官方当前 IP 段和运维能力为前提。
支持与分享
觉得这篇文章有点用,就把它递给下一位读者。
- 作者
- Demius
- 发布于
- 2026年9月20日
- 许可协议
- CC BY-NC-SA 4.0

评论区
分享你的想法,与大家交流讨论。