回源才是关键路径
把对象存储当成内容分发网络(CDN)的源站时,用户请求先到边缘节点,只有未命中才回源到桶。边缘命中时,延迟与带宽由 CDN 侧承担;一旦回源,延迟、并发连接与流量成本全部落到源站。所以设计的重点不是给源站堆带宽,而是提高边缘命中率、压住回源并发、让回源结果可被缓存。回源比例每降低一成,源站压力与费用都会同步下降。
基本信息
| 源站形式 | 桶域名或桶内前缀作为 HTTP 源站 |
|---|---|
| 加速对象 | 图片、音视频、脚本样式、安装包等静态资源 |
| 关键指标 | 边缘命中率、回源带宽、回源请求数、回源状态码分布 |
| 常见问题 | 带签名参数的地址命中率极低 |
| 成本构成 | 存储费 + 回源流量费 + 请求费 |
典型使用场景
- 前端静态资源加速:把构建产物放桶里,由域名经 CDN 分发
- 视频点播:分片文件放桶,边缘做分段缓存与就近分发
- 下载分发:安装包与镜像就近下载,同时降低源站带宽压力
- 私有资源对外:用临时签名地址经 CDN 下发,兼顾权限与速度
- 多地域访问:同一份对象由多地边缘节点就近返回
缓存与回源设计要点
缓存与回源设计要点
# 1) 内容寻址命名:文件名带内容指纹,可长期强缓存
# 例:app.7f3c1a.js 而不是 app.js
# 2) 按类型分层:不常变的资源给长缓存,入口文件给短缓存或不缓存
# 3) 回源收敛:边缘合并并发回源,避免同一对象被反复拉取
# 4) 回源鉴权:私有桶通过 CDN 回源携带固定请求头或参数完成校验
# 5) 预热:大版本发布前主动把热点对象推到边缘,避免集中回源冲击阵回源链路常见差异点
| 差异点 | 影响 | 处理建议 |
|---|---|---|
| 地址带签名参数 | 每个参数组合都是新缓存键,命中率极低 | 区别对待公开资源与私有资源,公开资源走不带签名的路径 |
| 请求头参与缓存键 | 携带多余头会让缓存分散 | 缓存键只保留协议、主机、路径等必要维度 |
| 源站返回不可缓存状态 | 边缘不敢缓存,全部穿透回源 | 确认对象可公开读取,元数据里设置正确的内容类型 |
| 大文件范围请求 | 分片回源会放大请求数 | 开启分片缓存与合并回源,必要时用自有分片方案 |
| 删除与更新不同步 | 边缘仍有旧副本,出现内容不一致 | 发布时用新文件名或主动刷新指定路径 |
私有内容不要用长期有效的 URL 直接交给边缘缓存:地址一旦泄露且被缓存,失效策略很难回收,应改用短有效期签名并配合刷新。
对象存储本身不感知 CDN 的缓存策略,边缘规则与源站元数据(内容类型、缓存控制头部)要一起设置;具体参数与命名以所选 CDN 与对象存储的官方文档为准。