知识卡片

CDN内容分发的主动推送与被动回源权衡

普通读书笔记卡

内容

[[CDN路由解析靠DNS的CNAME链条导流]]只解决了”把请求导到哪个节点”,节点上 必须真的有资源副本才能代替源站响应,这个补充资源的过程叫”内容分发”。 主动分发(Push)由源站主动把内容推给各边缘节点,推送的传输方式、触发 条件、时机完全自定义,需要源站和CDN服务在API层面配合,因此对源站不是 透明的,只对用户单向透明——适合双十一大促前把预计要用到的资源提前铺 到全国节点这类可预知场景。被动回源(Pull)由用户首次访问触发:CDN节点 发现自己没有该资源,就实时从源站现拉一份,首次响应时间等于”源站到CDN” 加”CDN到用户”两段时延之和,速度通常较慢(但因CDN网络条件普遍优于普通 用户,也不一定比直连源站慢),优点是完全不需要源站做任何配合,是小型 站点接入商用CDN的主流方式。资源更新/失效同样没有统一标准,现实中常见 的做法是”超时被动失效”(给资源设生存期,到期后下次请求自动重新回源) 与”手工主动失效”(网站更新时由CI/CD流水线调用CDN服务商接口主动刷新) 两者结合,而不是单纯依赖HTTP缓存Header——因为多数开发和运维人员对HTTP 缓存机制理解不到位,完全照搬反而效果更差。

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第4章"透明多级分流系统" 4.4.2节"内容分发"(源文件:_epub-src对应OEBPS/Text/chapter46.xhtml) - 结论依据:原文对比主动分发(对源站不透明,需API配合,适合预载场景) 与被动回源(首次访问慢但完全透明,是小站点主流选择),并说明CDN资源 更新常用超时被动失效结合手工主动失效,直接支撑本卡片结论。 - 原始内容:主动分发……由于主动分发通常需要源站、CDN服务双方提供程序 API接口层面的配合,所以它对源站并不是透明的,只对用户一侧单向透明…… 被动回源……是全自动、双向透明的资源缓存过程……不需要源站在程序上 做任何配合。