很多站长只关心蜘蛛有没有来,却很少关心它来得有多急。抓取速率是搜索引擎根据站点一段时间内的响应表现自动调整的,站点能做的是配合它、影响它,而不是单方面命令它。
抓取速率大致由什么决定
蜘蛛不是均匀地访问全站,它更像是在试探站点的承受力:
- 服务器响应时间:返回得越慢,蜘蛛越倾向于降低并发。
- 历史抓取表现:过去一段时间 5xx 和超时越多,后续抓取越保守。
- URL 总量与更新频率:经常更新的栏目会被更频繁地回访。
- 出口带宽的占用:蜘蛛的请求和大图、大文件下载共享同一条链路。
什么情况下应该主动放慢
如果日志里出现下面这些信号,说明站点已经在被压着走:
- 来自蜘蛛的请求中,500、503 的比例明显上升;
- 响应时间从几十毫秒涨到几百毫秒,甚至开始超时;
- 数据库连接被打满,正常用户访问也跟着变慢。
这种情况继续放任抓取,短期看像是蜘蛛很活跃,实际结果是它抓走大量错误页,随后自己降速,重要页面反而更晚被发现。
可以用的几种调节手段
robots.txt 里的 Crawl-delay
Crawl-delay 只对部分爬虫有效,一些主流搜索引擎已经不再参考这个字段。它更像是一种礼貌提示,不能当成限流开关。写不写要看你面对的是谁,写完也要用日志验证是否真的生效。
服务器与 CDN 层面限速
更可靠的做法是在入口做限制:对已知蜘蛛 IP 段设置并发上限或每秒请求数上限,超限时返回 429 或 503 并带上 Retry-After。这样节奏由站点自己决定,而不是等蜘蛛来降速。
减少无效抓取
放慢的另一面是少让它抓些没用的。参数组合页、空结果页、重复列表页被反复抓取,会占掉本可以留给新内容的额度。用 robots.txt 挡住无意义路径、用 canonical 收敛重复 URL、把 Sitemap 里已经失效的地址清理掉,都是在给抓取腾空间。
用 Sitemap 和内链引导顺序
想让重要页面先被抓到,靠的不是提高整体速率,而是让它在发现队列里排得更靠前:首页与栏目页提供稳定入口,Sitemap 保持准确,新页面发布后尽快从已有页面链出去。
什么时候不必刻意压速
如果响应时间稳定、错误率接近零、带宽有富余,站点反而应该欢迎蜘蛛多来。此时人为限速只会让新内容在队列里多等几天。判断标准不是服务器看起来累不累,而是日志里的实际指标。
看哪些指标来调整
- 5xx 与超时占比:按天统计,出现尖峰就回查那一时段发生了什么。
- 平均响应时间:区分蜘蛛请求与用户请求,避免互相掩盖问题。
- 抓取频次变化:蜘蛛主动降速往往先于你的监控告警。
- 新 URL 的首次抓取耗时:这是判断限速是否过头的直接证据。
把抓取速率理解成一个区间:低于下限,新内容迟迟不被发现;高于上限,服务器开始出错。目标是让蜘蛛稳定待在这个区间里,而不是追求某个固定数值。
最后提醒一句:任何调整都需要一到两周才能从日志里看出趋势,频繁改动反而让节奏更乱。先记录现状,再小步调整,用数据确认效果。