新页面发布之后,最常被问的问题是「蜘蛛什么时候来」。这个问题的答案很少由单一因素决定,它取决于页面有没有被放进站点已有的抓取路径里,以及蜘蛛上一次访问这些路径时,服务器给出的响应是否稳定。
发现延迟由三件事决定
- 入口:页面是否从已经被抓取的页面上有可点击的链接指向。孤岛页面只能靠 Sitemap 或外链被发现。
- 抓取节奏:蜘蛛对你站点的整体访问频率,受历史更新频率、响应速度和站点规模影响。
- 路径长度:从首页到目标页要经过几层链接,层数越多,被排队的时间通常越晚。
这三件事可以分别优化,但顺序上应先解决入口,再谈节奏。
发布时最容易漏掉的入口
很多页面不是没有被链接,而是被链接在蜘蛛不常优先走的位置:
- 只在搜索结果页或筛选后的列表里出现,参数化 URL 让蜘蛛摸不到一个稳定地址。
- 只出现在首页「最新」模块,而该模块由 JS 渲染,第一轮 HTML 里没有链接。
- 只挂在专题页的最后一屏,中间隔了十几条折叠内容。
- Sitemap 更新了,但内链还没补,蜘蛛只能通过地图找到它,拿不到任何上下文。
入口和上下文最好同时具备:从相关栏目、相关内容或聚合页,用一段正常可读的链接引过去,比单纯扔进 Sitemap 更稳。
用日志建立一条时间线
想知道发现延迟到底卡在哪,可以按下面的顺序对日志:
- 记录页面实际上线时间,包含内容真正可访问的那个时间点。
- 在日志里筛这个 URL 的首次请求,记下时间与状态码。
- 看首次抓取时返回的是 200,还是 301、302、404 或 5xx。状态码不对,后续会重复走弯路。
- 再看第二次、第三次访问的间隔,判断是被正常重访,还是被反复试探。
如果首访很快但状态码异常,问题多半在发布流程;如果状态码正常但首访很晚,问题大多在入口和抓取节奏。
几个常被误判的情况
「Sitemap 提交了,怎么还没来」
Sitemap 是发现线索,不是抓取指令。它告诉蜘蛛存在这么一个地址,但不保证立刻排队。真正决定顺序的,还是站点整体的抓取节奏,以及这个地址在站内的位置。
「日志里没记录,是不是被屏蔽了」
先确认日志覆盖范围:CDN、负载均衡、源站可能各记一份,只看其中一层容易漏。另外要区分蜘蛛 UA 与伪装 UA,反向解析能帮你过滤掉噪音。
「同一页面被抓好几次」
检查是否有多个 URL 指向同一内容,例如带和不带尾斜杠、大小写不同、带跟踪参数。规范化没做好时,蜘蛛会把它当成多个页面分别排队。
可操作的调整
- 新页面发布时同步补一条来自相关栏目的内链,至少保证从首页三层内可达。
- Sitemap 只放规范化的、能返回 200 的地址,lastmod 按真实更新时间填写。
- 保持服务器响应稳定,避免在蜘蛛访问集中的时段做全站重置或大流量压测。
- 按周统计新 URL 的首次抓取时间,形成自己的基线,出现异常时更容易发现。
发现延迟没有固定值,但可以观察、可以改善。把入口补齐、状态码理顺、日志核对清楚,多数「蜘蛛不来」的问题都能定位到具体环节,而不是停在猜测上。