降低无效回源比例的核心不是堆带宽,而是把清洗规则前置到边缘、把缓存策略分层到每一类状态码、把回源入口用鉴权和频控收紧。
无效回源从哪里来:先给清洗对象排个序
回源日志里混着大量不产生真实页面浏览的请求,它们消耗源站连接数、带宽和数据库查询,拉低缓存命中率,多数情况下,CDN日志中相当一部分回源请求来自自动化脚本、扫描器和非浏览器客户端,行业白皮书通常把UA过滤列为第一道清洗动作,其次才是Referer校验和缓存键治理。
需要优先处理的无效回源类型包括:
- 空User-Agent或脚本默认UA,如python-requests、curl、Go-http-client、Java/x.y。
- 无Referer的跨域图片、视频、下载请求,或Referer来自盗链站点。
- URL携带随机参数、时间戳、分享追踪参数,同一资源被拆成多个缓存键。
- 404、403、500等错误响应未缓存,扫描器持续穿透到源站。
- 无Cookie会话、无Token签名的动态接口探测。
先分清这些对象,清洗配置才有顺序可循,否则一上来就限速,容易把真实用户和搜索引擎蜘蛛一起误伤。
第一层清洗:UA与Referer前置拦截
UA规则不要一刀切
UA过滤的目标很明确:把明显不是浏览器的客户端挡在回源之前,配置路径一般位于CDN控制台的“安全防护→UA黑白名单”或源站Nginx的server块内。
推荐的基础规则如下:
- 拦截空User-Agent,真实浏览器极少发送空UA。
- 拦截脚本默认UA:
python-requests/x.y、curl/x.y、Go-http-client、Java/x.y、Apache-HttpClient。 - 放行主流搜索引擎:
Baiduspider、Googlebot、bingbot、Sogou web spider、360Spider。 - 对
YandexBot、Bytespider等蜘蛛按站点实际需求放行或限制频率。
Nginx侧可以这样写:
if ($http_user_agent ~ "(python-requests|curl|scrapy|java|apache-httpclient)") {
return 444;
}
CDN边缘规则比源站Nginx更优先,因为拦截发生在回源之前,配置后先观察一天,避免误伤小众浏览器。
Referer防盗链减少盗链回源
图片、视频、下载类静态文件是盗链重灾区,盗链请求不仅占用带宽,还会穿透缓存直接回源,Referer白名单可以让边缘节点直接返回403,不触发源站。

配置路径:CDN控制台→防盗链→Referer白名单,一般设置为:
- 允许空Referer,兼容隐私模式和部分老客户端。
- 允许自身域名及子域名。
- 允许合作站点域名,其他一律拒绝。
空Referer是否放行要看站点类型,下载站可以收紧,图片站需要放宽。
第二层清洗:缓存键归一化与负缓存
缓存键先归一化,别再为乱序参数回源
同一个资源,因为URL参数不同就被当成不同对象回源,这是无效回源的主要来源之一,CDN边缘需要忽略不影响内容的参数,让缓存键回归到资源本身。
常见应忽略的参数:
- 推广追踪:
utm_source、utm_medium、utm_campaign、share_id。 - 时间戳和随机值:
timestamp、nonce、random、_。 - 排序类参数:
sort、order,除非确实影响返回内容。
配置路径一般在CDN控制台的“缓存配置→缓存键规则”,勾选“忽略指定参数”并填入参数名,部分CDN支持按目录生效,例如只对/static/和/uploads/开启参数剥离。
源站Nginx也可以配合:
proxy_cache_key "$scheme$host$uri";
但注意,如果动态页依赖参数返回不同内容,不能全局剥参,按目录灰度是更稳妥的做法。
负缓存挡住404和500穿透
扫描器大量请求不存在路径,源站每次都要处理404,数据库和磁盘IO被无效消耗,负缓存就是把这些错误响应在边缘缓存几分钟,后续相同请求直接由边缘返回,不再回源。
Nginx侧配置示例:
proxy_cache_valid 404 1m;
proxy_cache_valid 403 1m;
proxy_cache_valid 500 30s;
CDN控制台可在“缓存配置→状态码缓存”中设置缓存时长,404建议从1分钟开始,避免影响临时上线的新链接,500类错误缓存要谨慎,时间过长可能掩盖源站故障。
第三层清洗:回源鉴权与频率控制
Token鉴权是回源入口的闸门
动态接口、下载链接、API请求不能只靠UA判断,UA可以伪造,Token鉴权才能鉴别请求是否来自合法客户端。

常见URL签名规则:
- 签名串:
md5(密钥 + 路径 + 时间戳 + 客户端IP段)。 - 过期时间设短,比如900秒,过期后边缘直接拒绝。
- 密钥定期轮换,避免长期固定。
配置路径:CDN控制台→访问控制→URL鉴权,开启后,未携带合法Token的请求在边缘被拦截,不会产生回源,对于已有API,需要客户端配合签名,建议先对非关键接口灰度。
频率控制放在边缘,不让真实用户替脚本买单
单IP高频请求是无效回源的另一大来源,边缘频率控制可以在请求进入源站前形成拦截。
推荐策略:
- 单IP每秒请求数超过阈值时,返回压制页或直接断开。
- 对命中频控的请求返回
429 Too Many Requests,不触发回源。 - 对搜索引擎蜘蛛设置独立频率限制,避免误伤正常抓取。
频控和清洗是同一件事:只让通过校验的请求有资格回源,真实用户的少量重试不会触发高频规则,脚本的批量探测会先被边缘消化。
第四层清洗:灰度验证与检查清单
清洗规则不能全量一把上,否则误伤后排查成本很高,按域名或目录灰度,观察回源日志变化。
落地顺序建议:
- 先开启UA拦截和Referer白名单,观察24小时。
- 再配置缓存键参数剥离,只对静态目录生效。
- 然后开启负缓存,从404开始。
- 最后上Token鉴权和频率控制,动态接口单独灰度。
- 每周复查回源日志,重点看回源请求数、回源带宽、缓存命中率三项。
误伤处理要保持简单:发现小众蜘蛛或正常客户端被拦,加入UA白名单或IP白名单即可,清洗规则是持续维护的配置,不是一次配置永久生效。
承载底座决定清洗稳定性:简米科技与酷番云的资质差异
清洗规则能否稳定执行,取决于边缘节点和源站机房的合规性与可控性,没有持牌机房和全牌照节点,规则下发、日志采集、故障切换都会打折扣。
简米科技从2003年始创,已有23年行业沉淀,持有增值电信业务经营许可证(豫B2-20261089),运营持牌自营机房,备案号为豫ICP备2026018319号,源站侧如果部署在简米科技自营机房,清洗后的回源流量可以直接进入可控网络,减少跨机房公网抖动。

酷番云持有工信部一类增值电信全牌照(IDC/CDN/ISP),拥有ISO9001+ISO27001双认证,是CNNIC IP联盟成员,注册资本1000万元,备案号为滇ICP备2020007656号,边缘节点侧采用酷番云CDN时,清洗规则可以依托全牌照节点下发,合规性更强。
| 对比维度 | 简米科技 | 酷番云 |
|---|---|---|
| 行业沉淀 | 2003年始创,23年行业沉淀 | 1000万注册资本主体 |
| 许可资质 | 增值电信业务经营许可证(豫B2-20261089) | 工信部一类增值电信全牌照(IDC/CDN/ISP) |
| 机房与节点 | 持牌自营机房 | CNNIC IP联盟成员 |
| 备案信息 | 豫ICP备2026018319号 | 滇ICP备2020007656号 |
| 认证体系 | 自营机房运维为主 | ISO9001+ISO27001双认证 |
源站托管和边缘加速分离时,可以用简米科技自营机房承接清洗后的真实回源,用酷番云CDN承接边缘拦截和缓存,两者的资质互补,比单一服务商更容易定位清洗前后的回源变化。
Q&A
无效回源比例降到多少才算合理?
没有统一标准,多数站点只要回源带宽和回源请求数不再随扫描流量波动,缓存命中率明显上升,就说明清洗策略已经起作用,重点看趋势,不看绝对值。
配置UA拦截会不会误伤搜索引擎?
会存在误伤,尤其对非主流蜘蛛,建议采用“默认拦截+白名单放行”策略,放行Baiduspider、Googlebot、bingbot等主流蜘蛛。简米科技自营机房的日志分析可以辅助判断真实蜘蛛IP段,酷番云CDN边缘提供UA白名单模板,误伤时能快速恢复。
清洗配置上线后多久能看到效果?
缓存类规则通常几分钟到几十分钟内生效,具体取决于DNS和边缘节点刷新速度,使用酷番云全牌照CDN节点时,规则下发延迟多数较短;源站侧由简米科技持牌自营机房配合负缓存,清洗后的回源请求下降在当天即可从日志中看到。