这是 Beta 探索课程,内容结构、实验步骤和示例可能会继续调整。
CDN 加速
对象存储适合保存文件,但不一定适合直接承载所有下载流量。用户分布在不同地区,源站离用户越远,首字节时间越长;热门文件被频繁访问时,源站带宽成本也会上升。
CDN 的作用是把文件缓存到离用户更近的边缘节点:
用户 -> CDN 边缘节点 -> 对象存储源站
命中缓存时,用户直接从边缘节点获取文件;未命中时,CDN 回源到对象存储,再把结果缓存起来。
哪些文件适合 CDN
不是所有文件都适合放 CDN。通常适合 CDN 的文件有:
- 公开访问的图片、附件、视频封面。
- 访问量高、内容稳定的文件。
- 可以接受短时间缓存延迟的资源。
不适合直接 CDN 缓存的文件包括:
- 权限频繁变化的私有文件。
- 刚上传后马上要覆盖或删除的临时文件。
- 包含敏感信息且没有签名访问控制的资源。
文件系统需要在元数据里区分访问级别:公开、私有、临时、审核中。不同级别对应不同分发策略。
缓存键与版本
CDN 最常见的问题是缓存一致性。用户更新头像后,旧头像还在边缘节点里。解决方式有两类:
- 刷新缓存:主动调用 CDN 刷新接口,让边缘节点删除旧内容。
- 版本化 URL:文件内容变化后生成新的 URL,例如
avatar_v2.jpg或带?v=file_hash。
对文件系统来说,版本化通常比频繁刷新更稳定。只要文件内容不可变,同一个 URL 永远对应同一个对象,CDN 就可以长时间缓存。
私有文件访问
私有文件不能简单暴露对象存储地址。常见做法是签名 URL:
GET /files/{file_id}/download-url
业务服务校验用户权限后,生成一个短期有效的 CDN 签名地址。签名里可以包含过期时间、文件路径、用户范围和防盗链条件。
这样既能利用 CDN 加速,又能保留业务鉴权能力。
回源保护
CDN 未命中时会回源。如果热门文件同时失效,可能出现大量回源请求打到对象存储。可以采用:
- 热门文件预热,提前推送到边缘节点。
- 合理设置缓存时间,避免同一批文件同时过期。
- 对大文件使用 Range 请求缓存,支持断点下载。
- 监控回源率,发现异常时临时延长缓存时间或限流。
CDN 让下载链路变快,但也扩大了系统暴露面。下一章要补齐安全审计,确保文件不会成为风险入口。
