CDN 控制台里有张图,叫回源带宽。多数人点开瞄一眼就关掉,觉得那是厂商那头的活儿。可账单上多出来的那笔钱、源站被打满的那几分钟、首页忽然变慢的那阵子,大半都从这条线上冒出来。cdn回源原理拆开也就三件事——什么时候回、回什么、回一趟花多少钱。这三件没弄明白,CDN 就是个摆在前面装样子的闸门,用户请求照样往源站里冲。

先弄明白「回源」回的到底是什么
边缘节点上缓存的是文件,不是一个请求。用户头一回来,节点手里没这份东西,就得伸回源站拿一份,这一步叫回源;拿到了存下来,后头再来人直接发,不用再跑一趟。所以回源量几乎全看命中率——命中率高,回源就少;命中率低,节点等于一个中转柜台,什么活儿都没替你省下来。图片、JS、CSS、字体这类静态文件命中率高,好办;带登录态、带用户 ID 参数的动态页面本来就难缓存,回源次数天然就多。
还有个常被忽略的细节:缓存是按 URL 做键的。你在链接后面挂个随机数、时间戳、utm 参数,同一个文件在节点眼里就是无数份新东西,每份都得回一趟源站。很多人抱怨 CDN 没效果,命中率也好看不到哪去,问题就出在这儿——不是 CDN 不行,是你自己把缓存键打散了。
cdn回源原理里最容易搞反的一环:缓存什么时候过期
不少人脑子里,CDN 是个只存不删的大仓库。不是。节点上的副本是有寿命的,HTTP 头里的 Cache-Control、max-age 决定了它能活多久,源站再配合 ETag、Last-Modified,过期回源时能回一个 304,等于告诉节点「东西没变,接着用」。这一趟虽然也叫回源,但没传正文,流量小得可以忽略。麻烦的是有人为了让页面「更新快」,把缓存时间设得极短,或者习惯性地在后台点强制刷新,结果每个请求都往源站跑,CDN 就白挂着。
反过来,缓存时间拉得太长,用户看到的是几天前的页面,价目表改了不生效,投诉照样来。这条线不是越长越好也不是越短越好,看内容更新节奏:图片、字体、第三方库可以放长;首页 HTML 短一点;接口类的东西别乱缓存,那里头全是和用户绑定的一对一数据。
回源流量和加速流量,是两笔账
这里特别容易栽。买 CDN 时看见「流量包」,默认以为所有流量都从那里面扣。实际计费里,用户到节点的下行流量,和节点回源站取东西的流量,很多服务商是分开算的:回源那部分有的记在 CDN 侧,有的干脆算到源站机器的出方向带宽上。各家口径不一样,具体得翻计费文档,以服务商官方页面说明为准。于是就出现一种场面——CDN 流量包还剩一大截,源站那台虚拟主机或云服务器的带宽先跑满了;或者反过来,源站安安静静,CDN 账单先超。
大文件下载、视频、软件包这类内容,回源一旦频繁,账是真的会疼。有人把几百兆的文件全挂上去却不设长缓存,用户每点一次节点都回一趟源站,加速没感觉到,源站出口先被抽干。这种亏吃过一次就记住了。
源站扛不住的时候,CDN 会帮倒忙
缓存到期那一瞬间,或者有人反复刷同一个没被缓存的地址,请求会同时压回源站,这叫回源风暴。节点数量越多,同一个时刻回源的并发就越容易被放大。源站本来只是台小机器的话,几个节点一起伸手就能把它按住,整站蹦出 502、504,看着像 CDN 挂了,实际是源站被打趴了。能做的几件事:给回源并发做限制,把不同内容的过期时间错开,重要页面在活动前提前预热,别让所有节点在同一秒发现「缓存没了」。
配置里三个跟回源有关的项,别乱填
回源地址、回源 HOST、回源协议。回源地址填 IP 还是域名,决定了源站换机器时你要不要回头改 CDN;回源 HOST 一填错,源站上的虚拟主机认不出你想访问哪个站,直接给你默认页或者 404;回源协议得跟源站实际监听对上,源站只开了 HTTPS,你回源走 HTTP,端口那头就是连不通。这三项各家控制台叫法不一样,找不到就在文档里搜「源站」两个字。还有回源端口,非 80/443 的要显式填上,不然按标准端口去连,一定连不上。
源站把回源 IP 挡住,症状很像 CDN 挂了
源站开了防火墙或者装了安全软件,白名单只放了自己常用的几个 IP,CDN 节点一上来全被拦在外面,表现就是间歇性超时、时好时坏。更难受的是取真实访客 IP 这一步——CDN 转发后源站日志里全是节点 IP,统计和风控全乱套。这时候要看 X-Forwarded-For 一类的头,别拿连接 IP 当用户 IP 用。配置顺序也别乱:先把节点侧的回源段确认好,再动源站白名单。
自查清单:几个数就能看出有没有白烧
第一,控制台里命中率长期低迷,先查缓存规则设了没有,页面是不是带着 Set-Cookie 一类让节点不敢缓存的响应头。第二,回源带宽贴着源站出口带宽的天花板走,说明 CDN 基本没替你挡住东西。第三,源站访问日志里来自各个节点 IP 的请求量很大,还集中在那几个 URL 上,多半是缓存时间太短。第四,改完缓存策略后别只看面板,去源站抓两天的出方向流量对比,曲线下来才叫生效。
判断标准其实一句话就够了——CDN 上线后,源站出方向的流量应该明显降下来。没降,八成是缓存没起作用或者回源配置没对上。别急着升带宽,先把命中率、缓存时间、回源 HOST 这三样逐个核对,所谓白烧的流量,基本都死在这么几个地方。
【版权声明】:本站内容若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!