搜索抓取

lastmod 不是越新越好:更新信号怎么参与蜘蛛的抓取调度

很多站点为了让蜘蛛多来,把 Sitemap 里的 lastmod 改成当天,结果反而让更新信号失去参考价值。本文说明更新时间戳在抓取调度里的作用,蜘蛛还会参考哪些变更线索,以及怎样维护 lastmod、Last-Modified 和列表页变化,让抓取节奏更贴近站点的真实更新频率。

搜索抓取

lastmod 不是越新越好:更新信号怎么参与蜘蛛的抓取调度

Sitemap 里的 lastmod 是最容易被误用的字段之一。它既不影响页面排名,也不能直接命令蜘蛛来抓,但在抓取调度里确实有参考价值。很多站长把它当成一种“提醒按钮”,每天刷新成当天日期,希望蜘蛛因此多来几次。短期看可能有点动静,时间一长,这个信号就会变得不可信。

更新信号在抓取调度里做什么

蜘蛛的待抓队列里,URL 数量极大。决定先后顺序的因素包括:页面重要性(内链、入口位置)、历史抓取表现、服务器响应情况,以及“这个页面可能变了”的线索。lastmod 属于最后一类。

如果站点有大量 URL 长期不变,而你又把 lastmod 全部写成当天,调度器面对的就是一份没有区分度的清单。它无法判断哪些页真的更新了,只能按其他因素排。更新信号失效,最直接的结果是真正改动的内容没有优先被抓,而不是“蜘蛛来得更多”。

蜘蛛判断更新还有哪些线索

Last-Modified 与 ETag

服务器响应头里的 Last-Modified 和 ETag,是蜘蛛判断内容是否变化的另一条通道。当它带着 If-Modified-Since 或 If-None-Match 再次访问时,若内容未变,服务器返回 304,蜘蛛就知道没必要重新解析。这条通道依赖服务器配置,往往比 Sitemap 字段更接近真实状态。

内链与列表页的变化

首页、栏目页、文章列表页的链接顺序和更新时间,也是线索。一个新链接出现在列表页顶部,比一条孤立的 Sitemap 时间戳更有说服力。反过来,如果列表页长时间没有新增链接,即使 Sitemap 里的 lastmod 天天更新,蜘蛛也会倾向于降低访问频率。

内容本身的差异

蜘蛛会把抓到的正文与上次存档做比对。只有模板部分变动(比如加了个广告位、换了页脚),正文几乎一致时,这次更新对站点来说意义有限。频繁触发这种“空更新”,会让调度器对时间戳的信任打折。

更稳妥的维护方式

  1. 只在页面主体内容发生实质变化时更新 lastmod,比如新增章节、修订数据、补充案例。
  2. 站内批量改动(改导航、改样式)不要全站刷新时间戳,除非这些改动确实改变了页面的可读内容。
  3. Sitemap 分片之间保持一致的规则,不要一部分用内容更新日期,另一部分用文件生成日期。
  4. 时间格式统一使用 W3C Datetime,并带上时区,避免解析歧义。
  5. 如果站点有自动发布流程,可以让程序在保存内容时写入真实时间,而不是每次运行生成任务都覆盖。

几个常见误区

  • 以为 lastmod 越新,抓取频率越高。调度器看的是变化是否可信,不是日期本身。
  • 把 priority 和 changefreq 当作控制手段。这两个字段目前对主流搜索引擎基本没有实际作用。
  • 页面内容没变,却为了让 Sitemap 看起来“活”而随便改几行无关文字,这会让更新判定更混乱。
更新信号的价值在于分辨真假变化。站点的更新节奏越接近真实,蜘蛛越容易把抓取安排在对的时间点。

可以定期检查的几件事

第一,随机抽十几个 URL,对比 Sitemap 里的 lastmod 与页面上显示的更新时间,看是否一致。第二,检查服务器是否返回 Last-Modified,以及内容未变时能否返回 304。第三,观察日志里同一 URL 的抓取间隔,是否与内容更新频率大致匹配。第四,新发布的页面是否在较短时间内被访问;如果没有,先看内链入口和列表页是否把它链接出来,而不是急着全站改时间戳。

抓取调度是一个综合判断的过程,lastmod 只是其中一条线索。把它记录准确,比把它写得更新,对站点更有用。