CDN 的作用与配置要点
CDN 把静态资源与可缓存内容分发到靠近用户的边缘节点:用户从就近节点取内容,源站带宽与跨地域延迟同时下降。配置的核心是缓存规则与回源策略——按文件类型和路径设置不同的 TTL,配合文件指纹实现长缓存,并在发布流程里集成刷新与预热。动态内容也可以加速(回源优化、长连接复用),但收益取决于回源链路的质量而不是边缘缓存。
基本信息
| 缓存规则 | 按文件类型与路径设置 TTL;带版本号文件名可长缓存 |
|---|---|
| 回源 | 分片回源与合并回源配合;回源启用压缩 |
| 刷新 | 发布流程集成刷新与预热,避免新旧版本混杂 |
| 缓存键 | 默认按 URL;带查询参数时需评估参数是否影响内容 |
典型使用场景
- 前端静态资源发布:JS、CSS、图片走边缘缓存,降低首屏加载时间
- 大文件分发:安装包、视频按分片缓存,缓解源站带宽压力
- 跨地域访问加速:为远端用户缩短传输路径与握手次数
- 突发流量承接:活动页面与图片由边缘节点承担峰值
- 源站保护:限制回源带宽,避免缓存失效时源站被瞬时打满
缓存策略分层
| 内容类型 | TTL 建议 | 刷新方式 |
|---|---|---|
| 带哈希指纹的 JS/CSS | 长(月级) | 发布换文件名,无需刷新 |
| HTML 入口文档 | 短(分钟级) | 发布后主动刷新 |
| 图片与字体 | 按目录设置中长 | 按路径批量刷新 |
| 接口响应 | 默认不缓存 | 确需缓存时评估参数化缓存键 |
发布流程集成要点
发布流程集成要点
1. 构建产物带内容哈希:app.a1b2c3.js 这类文件名
2. 上传对象存储并设置长缓存元数据
3. 刷新入口 HTML 与清单文件(短 TTL)
4. 预热热点资源,避免发布瞬间回源洪峰
5. 校验:抽查边缘节点返回的版本与预期一致
# 入口文档刷新失败是“新旧版本混杂”的常见原因使用要点
- 带哈希文件名的资源可以设置长 TTL:内容变更靠新文件名,缓存无需频繁刷新
- 入口 HTML 用短 TTL 并主动刷新,避免用户长期停留在旧版本
- 发布后核对边缘返回版本:抽查几个节点确认刷新已生效
- 回源要有限流与重试保护,缓存批量失效时源站压力最大
- 缓存键要明确:带业务无关参数(如跟踪参数)的 URL 会降低命中率
带哈希文件名的资源可以设置长 TTL:内容变更靠新文件名,缓存无需频繁刷新,这是降低发布期回源压力最有效的手段。
刷新是异步且耗时不确定的操作:紧急发布时不能假设“点了刷新就立刻生效”,关键变更要有回滚到旧版本资源的预案。