给蜘蛛池入口页套一层 CDN,是很常见的做法:便宜、能抗一点流量、看起来还分散了 IP。但对蜘蛛来说,中间多了这一层,情况就复杂了。同一批入口域名,走不走 CDN,蜘蛛拿到的响应头、缓存内容和节点 IP 可能完全不同。
CDN 在蜘蛛池入口页里到底做了什么
CDN 对入口页最直接的影响有三点:响应速度、节点 IP、缓存层。速度上,如果源站本身响应够快,CDN 带来的提升有限;如果源站在海外或者带宽紧张,CDN 能让蜘蛛更快拿到页面,抓取中断的概率会低一些。
更值得关注的是后两点。节点 IP 会随访问地域和时间变化,蜘蛛记录到的入口域名 IP 就不再固定;缓存层则决定了蜘蛛拿到的是源站最新版本,还是几个小时前的旧副本。
缓存命中率高,不等于蜘蛛看到的就是新内容
很多人把缓存命中率当成健康指标,觉得越高越省钱。但入口页的更新如果比较频繁,高命中率往往意味着蜘蛛读到的是过期内容。尤其是入口页上挂着最新 URL 列表时,缓存时间设置过长,蜘蛛拿到的还是一批旧链接,新 URL 的发现就会被推迟。
缓存策略的核心不是“命中多少”,而是“蜘蛛需要多久看到变化”。这两个目标在入口页上经常是冲突的。
回源频率与源站压力
缓存过期时间设短了,回源次数上升,源站压力变大;设长了,内容更新滞后。折中的做法是按页面类型分开设置:入口页主体这种变动不频繁的,可以给较长缓存;挂链接列表、最新 URL 的部分,走较短缓存或者干脆不缓存。
另外要注意回源失败的处理。源站短暂返回 5xx 时,如果 CDN 把错误响应也缓存下来,蜘蛛会连续一段时间只能拿到 5xx,对入口页的抓取状态是负面信号。多数 CDN 都有“不缓存错误状态”的选项,建议打开。
节点 IP 与蜘蛛来源识别
上了 CDN 之后,源站日志里记录的来访 IP 大多是 CDN 节点,而不是蜘蛛的真实 IP。这时候想判断“来的到底是不是搜索引擎蜘蛛”,就需要依赖 CDN 回传的真实 IP 头(不同厂商字段名不一样),或者用反向解析交叉验证。如果只按日志里的 IP 段去判断,很容易把节点 IP 误判成普通访客,也可能把真实蜘蛛误判掉。
反过来,蜘蛛侧看到的也是 CDN 节点 IP。对入口页来说这未必是坏事,但如果你的策略是“同一 IP 段里放太多入口域名”,CDN 会把这件事变得更难控制,因为节点 IP 是共享的、你无法独占。
哪些入口页不适合上 CDN
- 更新非常频繁、以 URL 列表为主的入口页,缓存反而添乱。
- 需要精确控制访问日志、逐条分析蜘蛛行为的入口页。
- 已经稳定、流量很小、源站响应本就很快的入口页,CDN 收益有限。
上 CDN 前值得确认的几件事
- 缓存规则能不能按路径或页面类型区分,而不是全站一刀切。
- 错误状态码能不能设置成不缓存。
- 回源请求头里能不能带上真实访客 IP 和 User-Agent。
- 节点 IP 段是否稳定、是否容易触发搜索引擎的风控。
- 缓存刷新有没有手动入口,需要多快生效。
总的来说,CDN 对蜘蛛池入口页不是必选项,也不是毒药。它解决的是一部分性能问题,同时把缓存一致性、IP 识别、日志分析这几件事变复杂了。判断标准很简单:这个入口页的瓶颈是速度还是内容时效?如果是前者,CDN 有价值;如果是后者,先把缓存规则想清楚再上。