臭名昭著aTrust隔离计划1.臭名昭著aTrust隔离计划2.VPN原理与aTrust隔离网络实践3.docker-easyconnect到底做了什么4.TUN(tunnel-隧道-虚拟网卡)模式
基于Quartz搭建的个人博客1.Quartz个人博客使用教程2.使用 rsync 增量部署 Quartz 博客3.使用 GitHub Actions 自动部署 Quartz 博客5.域名绑定6.CDN加速Obsidian、双向链接与知识图谱
旅行
行程攻略青岛三日游行程攻略
前端
NginxNginx配置与反向代理入门
Nodenpm与npx的区别
中华财险-公司项目
对外接口文档
基础数据码表对外接口(仅支持rpc调用)业务码表对外接口应用主数据对外接口
基础运营查询版本更新日志详情消息中心对外接口站内信对外接口站内信模板配置手册
权限中心权限中心对外接口文档(最新)权限中心对外接口文档前端ACL-CORE FACADE依赖版本
审计中心审计中心对外接口文档audit-center-facade版本
审批中心工作流迁审批流现状工作流迁审批流API能力替换方案老审批流接口文档审批中心接口文档审批中心业务回调FAQ
账号中心内部系统对接单点登录内部系统对接认证中心三方网页应用登录授权账号中心对外接口文档前端账号中心RPC接口文档账户变更对外广播消息文档账户中心对外接口HRMS外部员工变更广播消息文档HRMS外部员工对外接口
组织员工岗位🔥机构映射SDK接口文档员工岗位变更通知说明组织机构管营一体概念与用法组织员工对外广播消息文档组织员工岗位对外接口文档组织员工岗位对外接口文档前端组织员工岗位数据模型组织员工主数据业务场景案例organization-facade版本
hrms(大型人力资源外包管理系统)
项目架构说明HRMS Maven模块与依赖说明
项目说明0.流程中心模块0.组织模块说明1.业务线模块2.计划模块3.项目模块4.协议模块5.供应商模块6.合约域模块7.外包人员模块*核心:外包人员生命周期
项目运维外包人员项目编制差异排查与修复2.HRMS相关问题排查4.修改externalId(externalId和accountId不一致)
需求-系分
1.内部转外包0723外包人员关联历史内部账号系分新增外包人员关联历史账号内容(紧急0723上线)需求
2.工作岗位0820工作岗位0820需求工作岗位0820需求-系分
3.用工模式调整0917内部人员转外包用工系统需求2内部人员转外包用工系统需求-系分
sso(账号中心-单点登录)
项目架构说明aboss-sso项目架构入门AOP统一日志打印链路Maven多模块项目高级知识OAuth2.0
项目说明1.SSO-OAuth2.0与IDaaS登录流程2.外部账号创建流水号并发问题分析
AI
使用说明
第三方插件&技能简介Archify使用与安装指南Ponytail使用指南
CodexCodex CLI与IDE区别及使用指南Codex Hook单独配置与提交通知Codex MCP安装与使用指南Codex第三方插件安装与使用指南
Agent开发1.LLM、Token、上下文窗口与模型参数2.大模型 API、请求参数与响应结构3.Spring AI ChatClient4.Prompt、System Prompt、Prompt 模板6.结构化输出、JSON Schema7.SSE 流式响应8.会话 ID、聊天记录、Redis9.超时、重试、限流、降级10.完成可运行聊天接口
GitGit常用命令与Obsidian推送排查
Java
面试题Java基础与集合面试题
AtomicInteger原子计数与并发安全ConcurrentHashMap并发安全与计数Java线程、线程池与Future
python
基础Python基础语法
HTTPXHRMS员工详情接口调用(Python HTTPX)

一、💡 一句话理解

核心结论

CDN(Content Delivery Network,内容分发网络)会把网站资源缓存到多个地区的边缘节点,让用户优先从距离自己更近的节点获取内容,而不是每次都直接访问源站服务器。

域名和 DNS 负责“找到入口”,CDN 负责“就近发内容”。域名绑定方法见:5.域名绑定

二、📡 理论:CDN 的组成与工作方式

2.1 CDN 的核心组成

可以把 CDN 理解为分布在各地的“网站分店”:

组成白话理解实际作用
源站(Origin)总店保存最原始、最完整的网站文件
CDN 节点(Edge Node)各地分店就近向用户提供缓存内容
缓存(Cache)分店库存暂存 HTML、CSS、JS、图片等资源
加速域名用户访问的门牌通常通过 CNAME 指向 CDN

CDN 不要求源站和 CDN 是同一家云厂商。当前博客可以使用阿里云 ECS 作为源站,再选择其他 CDN 服务商;关键是 CDN 能访问 ECS 源站,并满足备案和节点覆盖要求。

对于当前 Quartz 博客:

Quartz 构建生成的 public 目录

        上传到阿里云 ECS

          作为 CDN 源站

     CDN 节点缓存静态网页资源

        用户从附近节点访问

2.2 CDN 是怎么工作的

CDN 主要有两种访问情况:

情况访问过程结果
缓存命中用户 → 附近 CDN 节点 → 返回资源速度快,不需要访问源站
缓存未命中用户 → CDN 节点 → 源站 → CDN 节点 → 用户CDN 获取资源后缓存,首次访问可能较慢

完整流程可以简化为:

用户访问 blog.example.com

DNS 将域名指向 CDN CNAME

CDN 按用户位置选择合适节点

节点检查本地是否有缓存
      ┌───────────────┴───────────────┐
      ↓                               ↓
   缓存命中                        缓存未命中
      ↓                               ↓
直接返回资源                回源 ECS 获取并缓存

对于 Quartz 这类静态博客,HTML、CSS、JS 和图片都适合被 CDN 缓存。但 HTML 缓存时间不宜设置过长,否则发布新文章后,用户可能暂时看到旧页面。

三、⚙️ 理论:CDN 能解决什么问题

3.1 CDN 能改善的地方

  • 缩短访问距离:用户从附近节点获取资源,减少长距离传输。
  • 减少跨运营商影响:用户不必每次都直接连接源站所在的网络。
  • 减轻源站压力:大量重复访问由 CDN 节点承担。
  • 改善静态资源加载:图片、CSS、JS 和静态 HTML 适合被缓存。
  • 提高突发访问的承载能力:热点页面被缓存后,源站不需要重复处理相同请求。

3.2 CDN 不能解决什么问题

CDN 不是万能加速器

CDN 只能优化“用户到 CDN 节点”和“缓存资源分发”这两段链路,不能自动消除 VPN 绕路、源站故障、动态接口慢或公司网络策略造成的问题。

  • 如果 VPN 出口距离 CDN 节点仍然很远,访问速度仍可能不理想。
  • 如果资源经常未命中缓存,仍然会回源到国内 ECS。
  • 动态接口、登录请求和实时数据通常不能像静态文件一样长期缓存。
  • 域名本身不会提速,必须将域名接入 CDN,并正确配置缓存和源站。

四、🚀 实践:为 Quartz 接入 CDN

4.1 方案一:全球 CDN 加速 + 国内 ECS 源站

这是成本和复杂度较低的方案:

国内用户 ─────→ 国内 CDN 节点 ┐
                              ├→ CDN → 阿里云 ECS 源站
VPN / 海外用户 → 海外 CDN 节点 ┘

阿里云 CDN 的“全球”加速会将用户调度到较近的 CDN 节点。海外缓存命中后,用户不需要每次都直接访问中国内地 ECS。

但如果海外节点缓存失效,仍然需要跨境回源到中国内地源站,第一次访问或刚发布内容时可能仍然较慢。阿里云海外加速说明

4.2 方案二:国内源站 + 香港或海外镜像源站

如果公司网络要求所有访问都经过 VPN,推荐将 VPN 用户视为海外用户处理:

国内用户

国内 CDN 节点

国内 ECS 源站
 
公司 VPN 用户 / 海外用户

海外 CDN 节点

香港或海外镜像源站

可以分两个阶段实施:

  1. 低成本阶段:只保留国内 ECS,在 CDN 中选择“全球”加速。
  2. 稳定阶段:将 Quartz 构建后的 public 目录同步到香港或海外服务器,再通过 CDN 的地域规则将国内用户指向国内源站,将非中国内地用户指向海外源站。

阿里云 CDN 支持按用户地域配置不同源站,也支持配置多个源站并设置主备优先级或权重。阿里云条件源站阿里云多源站配置

4.3 阿里云 CDN 全球加速的配置步骤

  1. 确认域名已经完成 ICP 备案。阿里云 CDN 的“中国内地”或“全球”加速区域都要求加速域名有 ICP 备案号。阿里云 CDN 备案要求
  2. 在阿里云 CDN 中添加 www.example.comblog.example.com 作为加速域名。
  3. 将源站设置为阿里云 ECS 的公网 IP 或源站域名。
  4. 加速区域选择“全球”,业务类型选择适合静态网站的类型。
  5. 将域名 DNS 解析从 A 记录改为 CDN 分配的 CNAME。阿里云 CDN 配置说明
  6. 为 HTML 设置较短缓存时间;CSS、JS 和图片可以设置较长缓存时间。
  7. Quartz 重新部署后,及时刷新或清理 CDN 缓存。

不要误选“全球(不包含中国内地)”

这个区域虽然不要求 ICP 备案,但中国内地用户会被调度到香港、日本、新加坡等境外节点,不适合同时追求国内和海外访问速度。阿里云加速区域说明

如果 VPN 是全局代理且公司网络不允许分流,就不能把“国内直连”作为前提。VPN 开启时,CDN 通常会按照 VPN 出口位置进行节点调度,而不是按照你真实所在位置调度。

五、🔍 最小例子:为 Quartz 配置 CDN

假设:

访问域名:www.example.com
CDN 源站:阿里云 ECS 公网 IP
网站目录:/www/AfykeBlog/afyke-blog

5.1 CDN 控制台配置

在 CDN 控制台添加:

配置项示例值
加速域名www.example.com
加速区域全球
源站地址阿里云 ECS 公网 IP
业务类型静态网站或图片小文件

5.2 DNS 配置

CDN 创建成功后会分配一个 CNAME,例如:

www.example.com → example.cdn-provider.com

将域名 DNS 从原来的 A 记录改为 CNAME:

主机记录记录类型记录值
wwwCNAMECDN 分配的 CNAME

5.3 发布后的缓存处理

修改 Markdown 笔记

Quartz build

生成新的 public

部署到 ECS 或海外镜像源站

刷新 CDN 缓存

建议 HTML 使用较短缓存时间,CSS、JS 和图片使用较长缓存时间。若发布后页面没有更新,优先检查 CDN 缓存,而不是马上修改 DNS。

六、⚠️ 边界、费用与常见误区

6.1 CDN 不一定要和 ECS 使用同一家云厂商

阿里云 ECS 可以作为源站,CDN 可以选择其他服务商。选择时重点比较:

  • 是否有中国内地和海外节点。
  • 是否支持中国内地加速及 ICP 合规要求。
  • 是否支持按地域选择源站。
  • 海外回源线路是否稳定。
  • 流量、请求数和 HTTPS 是否分别计费。

6.2 CDN 为什么会收费

CDN 使用了各地边缘节点、网络带宽和缓存服务,通常会按下行流量、请求数或其他增值功能计费。阿里云 CDN 当前静态 HTTPS 请求每月前 500 万次免费,但下行流量仍需以实际计费规则为准。阿里云 CDN 计费说明

个人博客访问量不大时,可以先不接 CDN,或先使用按量计费并设置流量告警;不要一开始就购买大额资源包。

6.3 CDN 常见误区

  • DNS 指向 CDN,不等于源站已经配置正确;CDN 仍然需要能够访问源站。
  • CDN 缓存命中后速度快,但缓存未命中仍然要回源。
  • CDN 不会自动修复 VPN 的绕路问题。
  • 使用第三方 CDN 不能绕过中国内地服务器的 ICP 备案要求。阿里云备案核查说明

七、📌 总结

CDN 的核心链路是:

用户
  ↓ 访问加速域名
CDN 边缘节点
  ↓ 缓存未命中时回源
源站 ECS 或海外镜像

对于当前 Quartz 博客:

  1. 先确认域名和源站可以正常访问。
  2. 访问量不大时,不必为了“看起来专业”强行使用 CDN。
  3. 如果 VPN 导致海外访问慢,先使用全球 CDN + 国内源站。
  4. 如果缓存命中后仍不稳定,再增加香港或海外镜像源站。
  5. 国内源站和海外源站通过 CDN 的地域规则分流。

一句话总结

域名负责找到入口,DNS 负责指路,CDN 负责就近发内容,源站负责保存和提供原始网页。