蜘蛛抓取不是一次性的动作。一个新页面被首次抓取之后,搜索引擎会按自己的节奏安排下一次访问,这个间隔可能是一天、一周,也可能更久。站点无法直接指定多久来一次,但可以通过若干信号影响排队顺序。这篇文章讲的是重访这件事:哪些因素让它变快,哪些让它变慢。
重访频率的两层来源
先分清责任。第一层是引擎侧的抓取容量与调度策略,站点无法改变;第二层是站点发出的信号,包括页面价值、更新情况、服务器质量。日常优化能动的只有第二层。所以看到某个页面很久没被再抓时,先判断它是被降频,还是压根排在队尾。
会被读到的几个信号
真实的内容变化
最直接的信号是页面确实变了。有新段落、有新数据、有更新的商品信息,蜘蛛下次访问时内容指纹不同,这类页面更容易获得更高频的调度。反之,如果每次抓到的正文一模一样,只有推荐位或时间戳在变,那就等于告诉引擎这里没什么新东西。
Last-Modified 与 ETag
正确返回这两个响应头,可以让蜘蛛用条件请求确认页面是否变化,未变时得到 304,节省的是双方的资源。需要注意的是,别让时间戳跟着请求变化,也别在内容没动时去改它。头部信息与实际内容不一致,属于噪声,不是信号。
Sitemap 中的 lastmod
它的作用是告诉蜘蛛哪些页面值得优先看一眼,因此应当与页面的真实修改时间对齐。如果全站文件的 lastmod 每天都在跳,或者在批量提交时统一刷成当天,这个字段对调度的影响会迅速衰减。
页面在站内的位置
从首页出发点几次能到、有没有栏目页指向它、有多少条内链、锚文本是否稳定,这些决定蜘蛛对页面重要性的判断。一个藏在三层目录之下、只有一条链接的页面,即便内容更新,也常常排在后面。想提高重访概率,先把它挪到更浅、更常被访问的路径上。
页面被实际使用的情况
有搜索需求、有正常点击的页面,通常会得到更积极的调度。这部分站点不能直接干预,但能做的是让页面具备被搜索的条件:清晰的标题、可索引的正文、稳定的 URL。如果页面参与不了搜索,重访的意义本身就有限。
整站健康度决定了所有人的速度
抓取资源是按站点整体分配的,个别页面再重要,也受整体表现拖累。下面这些情况会一起把节奏拖慢:
- 频繁出现 5xx 或超时,蜘蛛会主动降低并发与频率;
- 大量 404、410 或软 404 页面消耗抓取次数;
- 筛选参数、排序参数生成大批近似 URL,让有效页面排不上队;
- 重定向链过长,一次抓取要走三四跳;
- 页面响应时间持续偏高,单次抓取成本上升。
换句话说,想让重要页面更快被再次抓取,先让整站少浪费几次抓取请求。
怎么自查重访节奏
- 从服务器日志中按 URL 统计访问间隔,得到每个页面的平均重访周期;
- 把时间轴与内容更新时间对照,看更新之后多久被再次访问;
- 挑出长期不回来的页面,检查它们的入链数量、层级与状态码;
- 确认这些页面的 Last-Modified、lastmod 与真实修改时间一致;
- 观察整体抓取量中,有多少落在重复参数页或错误页上。
几个容易走偏的做法
- 为了催抓取而每天改 lastmod:与内容不符的时间戳只会降低可信度;
- 反复提交没有变化的页面:占用的是本可以给新内容的额度;
- 用大批低质页面去占位:分母变大,单个页面分到的次数自然变少;
- 以为提交就等于被抓:提交只是进入候选,抓取仍由调度决定。
重访频率是调度结果,不是能单独优化到某个数值的指标。把内容更新、内链位置和服务器稳定性做扎实,节奏通常自己会回到合理区间。
如果要在有限精力里挑两件事先做,建议先处理站内可达性,再处理错误与超时。这两项改善之后,日志里的重访间隔往往比调整任何元信息都来得明显。