抓取预算是有限的,响应耗时是主要消耗项
讨论抓取问题时,大多数人的注意力放在内链、Sitemap、robots 这些「入口层」的事情上。但还有一个更基础的因素容易被忽略:每一次抓取,蜘蛛都需要等待服务器把内容返回。等待的时间越长,同一个时间窗口内能完成的抓取次数就越少。也就是说,慢响应和入口缺失,最终表现都是抓取量不足,但成因和修法是两回事。
如果你的站点内链完整、Sitemap 正常、robots 也没挡错,抓取量却始终上不去,不妨先把服务器响应耗时这一项排查清楚。
一、响应耗时是怎么消耗抓取机会的
蜘蛛的抓取并发通常是有限度的。一次请求从建立连接到拿到首字节,这段时间都算在「占用」里。可以把它理解成一条传送带:站点返回得快,单位时间能过的请求就多;站点返回得慢,队列周转速度就被拖住。
- 列表页、聚合页、搜索结果页如果每次都要实时查询,耗时往往最长;
- 未命中缓存的请求,通常比命中缓存慢一个数量级;
- 少数几个常年很慢的 URL,会反复出现在抓取队列里,持续占用额度。
需要说明的是,抓取调度本身还受站点权重、内容更新频率、历史抓取质量等多因素影响,响应耗时只是其中一环,改善它并不保证抓取量立刻上升。
二、先看清楚哪几个信号
- TTFB 的分布,而不只是平均值。平均值会被大量快请求掩盖,建议看 P75、P95;
- 超时与连接中断的比例,以及它们集中在哪些路径;
- 5xx、502、504 出现的时段,是否与流量高峰或定时任务重合;
- 同一个 URL 多次被访问时,耗时是否稳定,还是忽快忽慢;
- 是否所有慢请求都落在同一台后端、同一个接口或同一类参数上。
把这几项和一两个月的服务器日志对照着看,通常能很快判断问题是「全站都慢」还是「某些模板慢」。
三、常见成因
1. 后端查询与聚合逻辑过重
分类页需要跨表统计、需要按条件排序或调用多个接口拼装数据时,单次请求耗时会明显拉长。
2. 缓存层缺失或命中率低
缓存键设计过细、缓存时间过短、频繁被参数击穿,都会让缓存形同虚设。
3. 动态渲染与首屏等待
依赖客户端渲染再回填内容,或服务端渲染时同步等待外部接口,都会把响应时间推到几百毫秒以上。
4. 页面与静态资源共用同一入口
图片、附件不经过 CDN,直接由应用服务器输出,会挤占 HTML 的响应能力。
5. 连接与限流策略过紧
每次请求重新握手、并发阈值设置过低,都会让抓取效率打折,但这一项要谨慎调整。
四、排查顺序建议
- 先抽样实测,从不同栏目各取若干条 URL,区分是入口页慢还是全站慢;
- 对比命中缓存与未命中缓存的耗时差异;
- 把 HTML 与静态资源的响应时间分开统计,避免互相干扰判断;
- 回到服务器日志,核对蜘蛛请求的状态码、耗时与请求路径的对应关系;
- 调整后再按周观察回访频率与抓取覆盖面,不要只盯着单日数据下结论。
五、可以优先动手的几件事
- 给列表页与栏目页加短周期缓存,时长按实际更新频率设定;
- 把慢接口改为异步计算或预生成,避免在请求链路上实时等待;
- 静态资源交给 CDN,让应用服务器专注输出 HTML;
- 开启连接复用,减少重复握手带来的固定开销;
- 在限流配置上给已知爬虫留出合理余量,但仍需防止异常流量放大。
响应耗时的改善通常不会立刻反映为抓取量上升。建议以两到四周为单位做前后对比,同时排除内容更新频率变化、站点结构调整等干扰因素,否则很容易把正常波动误判成优化生效。
结语
把响应耗时纳入日常巡检,和 Sitemap、内链结构、robots 规则放在同一张检查表上,才能判断抓取问题究竟出在「入口没被发现」,还是「入口被发现但抓不动」。前者要补链接和提交渠道,后者要回到服务器和缓存上找答案,方向对了,排查效率会高很多。