合并回源减少请求数的本质,就是让CDN节点把用户对多个资源的请求合并成一个统一的回源请求,一次性从源站拉取所需数据,用更少的回源连接换取更低的带宽峰值。它可以显著降低你的回源带宽成本,同时减轻源站压力,这篇文章会从原理、配置方法到边界场景,把合并回源这件事讲透。
为什么要盯着回源带宽:回源请求才是带宽成本的源头
回源流量与用户流量的区别
用户访问网站时,流量分为两条路,一条是用户到CDN节点的“边缘流量”,另一条是CDN节点到源站的“回源流量”,很多站长只盯边缘流量,觉得CDN命中率高就万事大吉,但实际上,回源带宽往往才是账单里最扎眼的那一项。
原因在于,CDN节点只缓存了一部分资源,当用户请求的资源在节点上不存在时,CDN必须去源站拉取,这个过程不仅消耗源站的服务器资源,还会在CDN和源站之间产生高额流量,边缘流量有CDN的规模效应兜底,但回源流量是实打实从你的源站出口走的。
据统计,大多数中小网站的CDN回源流量占比在20%-40%之间,如果缓存策略设置不当或者资源特性特殊,回源比例还会更高。
请求数量决定带宽峰值,而不是流量总量
流量总量大,不代表带宽峰值高,带宽成本的关键在于每秒请求数和并发连接数,举个例子:同样是1GB流量,如果是10个用户各自下载一个大文件,峰值带宽并不高;但如果是1万个用户同时请求1000个小文件,每个文件都要回源,并发连接数会瞬间飙高,带宽峰值自然水涨船高。
业界衡量CDN带宽成本时,看的不是“跑了多少GB”,而是“最高峰时用了多少Mbps”。请求次数越密集,回源并发就越高,带宽峰值就越难看,合并回源减少请求数,正是从“削减并发连接”这个角度切入,让源站出口带宽始终处于一个平坦的曲线,而非陡峭的尖峰。
哪些场景最容易让回源请求失控?
- 图片类网站:每张图片都是一个独立的URL,页面里几十张图片就对应几十个资源请求,如果CDN缓存未命中,每个请求都会触发一次回源。
- API接口返回的JSON数据:这类接口响应快但生命周期短,缓存命中率普遍不高,每次刷新页面,接口都要回源。
- 带query参数的小文件:只要URL带有不同的查询参数,CDN就会当成不同资源处理,回源请求数直接翻倍。

这些场景的共同特征是:单个请求的流量不大,但请求数量极其庞大,合并回源的思路就是把这些碎片化的请求打包处理,用更少的请求覆盖更多的用户。
合并回源减少请求数怎么配置:三步把回源请求压到最低
第一步:开启CDN控制台的合并回源开关
目前的云厂商CDN都在控制台里提供了“合并回源”选项,以主流CDN为例,操作路径通常是:CDN控制台 → 域名管理 → 回源配置 → 合并回源,开启后,节点在回源时会将同一时间段内发往同一源站的多个请求合并,复用同一条TCP连接。
这个开关的默认状态通常是关闭的,因为合并回源会影响源站日志中的IP记录,开启前需要确认源站是否能接受这种变化,尤其是你依赖源站日志做访客分析的场景。
第二步:通过缓存配置减少回源触发次数
合并回源是“治标”,缓存配置是“治本”,推荐配置策略如下:
- 设置合理的缓存过期时间:图片、CSS、JS这类静态资源把缓存时间拉长到30天以上,让绝大部分请求命中边缘节点。
- 忽略query参数:如果URL后面的参数不影响内容展示,可以在CDN配置里开启“忽略参数缓存”,这样即使URL不同,只要路径一样,就使用同一条缓存。
- 开启目录级缓存:把整个静态资源目录设置为强制缓存,绕过源站请求。
第三步:用自定义HTTP头过滤无效回源
专业的运维人员还会在源站前面加一层过滤逻辑,比如通过Custom Header来标记哪些请求允许回源,哪些请求直接拒绝,这样可以避免恶意爬虫或者无意义的请求打到源站上,进一步压缩回源请求数。
合并回源与不合并回源的差异对比
| 对比维度 | 不开启合并回源 | 开启合并回源 |
|---|---|---|
| 回源连接数 | 每个请求对应一次回源 | 多个请求共享一次回源连接 |
| 源站并发压力 | 高,高峰时段容易打满 | 低,并发更平稳 |
| 回源带宽峰值 | 波动大,易出现尖峰 | 曲线平滑,峰值可控 |
| 源站日志IP | 记录真实客户端IP | 显示CDN节点IP |
| 适用场景 | 需要精确IP分析的源站 | 以带宽成本为优先的场景 |
除了合并回源,回源带宽成本怎么降低:多方案搭配使用
合并回源是有限度的,CDN节点在同一个时间窗口内能合并的请求数有上限,超出上限的部分还是会单独回源,所以要想真正把回源带宽压下来,一般需要搭配其他方案一起用。
强制缓存与协商缓存的分层策略
大多数网站都在用混合缓存策略,具体方案是:
- 静态资源:Cache-Control设置为public,max-age=31536000,强制缓存,不回源。
- HTML页面:Cache-Control设置为no-cache,走协商缓存,每次都带上If-Modified-Since或ETag去源站验证,如果源站返回304,不需要传输实体内容,回源带宽占用极小。
行业共识认为,合理使用协商缓存可以将回源流量减少一半以上,因为304响应只包含响应头,没有body体,消耗的带宽几乎可以忽略不计。
源站主动压缩,数据量直接变少
开启Gzip或Brotli压缩,静态文件的体积能下降60%-70%,回源时同样适用,源站把压缩结果返回给CDN节点,CDN节点再按用户请求的Accept-Encoding来决定是否解压后转发,这一步是在源站环节完成的,CDN层面不需要额外配置。
通过拨测观察回源曲线来验证效果
配置做完以后,需要验证效果,用站长工具或者云拨测平台,定时检测几个关键页面的回源指标,观察以下三个维度:
- 回源请求数是否下降:对比配置前后的请求数曲线。
- 回源带宽峰值是否削平:观察峰值时段是否出现明显回落。
- 首字节时间是否受影响:确认合并回源没有拖慢页面加载速度。
业内专家指出,合并回源在多数情况下对用户体验几乎没有影响,因为合并请求节约了TCP连接建立和TLS握手的耗时,响应速度反而可能更快。

合并回源的边界:什么时候不能用
动态接口和个性化数据不能合并
合并回源的一个副作用是:同一时间窗口内指向同一URL的请求会被合并,源站只能返回同一份响应,如果接口返回的内容依赖用户登录态或地理位置,这一条就不适用。动态接口需要单独配置不缓存,并且不能开启合并回源,否则就会出现用户A看到用户B数据的问题。
大文件分片下载要特殊处理
视频、安装包等大文件走的是分片回源,这类请求每个分片都有独立的Range参数,合并回源的作用极其有限,对于大文件场景,建议单独设置域名并开启Range回源,只拉取缺失的分片,避免重复传输。
源站日志分析场景需谨慎
开启合并回源后,源站看到的客户端IP地址会变成CDN节点的出口IP,真实的客户端IP需要通过CDN回传的X-Forwarded-For头来获取,如果你依赖源站日志做用户地域分析,需要在源站Web服务器层面调整日志解析逻辑,否则后续数据就会失真。
合并回源常见问题
合并回源减少请求数后,源站日志里看不到真实IP怎么办?
这是开启合并回源后的正常现象,解决方案是让CDN在回源请求头中添加X-Forwarded-For字段,然后在Nginx或Apache中修改日志格式,用该字段替代remote_addr,这样既能保留合并回源的带宽优势,又不会丢失访客IP数据。
合并回源会拖慢首字节时间吗?
多数情况下不会,合并回源节约了TCP连接复用和TLS握手的时间,对于小文件场景,响应速度反而更快,但如果是大文件分片场景,建议关闭合并回源并单独走Range回源,判断标准很简单:观察开启前后的首字节时间曲线,如果有明显上升,说明当前业务不适合合并回源。
回源带宽计费和请求数计费怎么选?
目前云厂商的CDN计费模式以带宽计费和流量计费为主,单独的请求数计费较少,如果你的业务请求密集但单次请求极小,选择流量计费更划算;如果业务带宽峰值稳定,选择带宽计费更可控,合并回源减少请求数的方案,对两种计费模式都有正向影响流量减少,峰值也随之下降。
