搜索抓取

Sitemap 中 lastmod 失真与回访节流:抓取频次判断的核对清单

Sitemap 里的 lastmod 与 changefreq 若长期失真,会削弱抓取调度对更新信号的采信度,回访节奏被拉长。本文梳理常见的失真来源、逐项核对顺序,以及修正后应观察的日志指标,帮助站点让 Sitemap 重新具备区分「变了」与「没变」的能力。

搜索抓取

Sitemap 中 lastmod 失真与回访节流:抓取频次判断的核对清单

Sitemap 里的 lastmod 与 changefreq 常被当成「让蜘蛛多来几次」的开关,但在实际抓取调度中,它们只是参考信号。信号一旦长期不可信,调度侧会降低对它的采信度,回访节奏随之被拉长,新发布或刚更新的 URL 就更容易排在队尾。

一、lastmod 为什么会被「打折」

抓取调度需要判断这个 URL 是否值得现在来。它参考的维度通常包括:历史抓取中内容是否真的发生变化、页面响应是否稳定、站点整体的更新频率,以及 Sitemap 自身声明的可信度。当 Sitemap 中大量条目在每次生成时都被刷成当前时间,而页面内容实际未变,这个字段的区分能力就没有了。

关键不是「有没有写 lastmod」,而是「写了之后能不能区分出真正变化的页面」。

二、常见的失真来源

  • 构建脚本每次发布都全量重写 lastmod,全站时间戳统一刷新。
  • 模板层直接注入当前时间,连页脚版权年份变更也会触发更新。
  • lastmod 使用本地时区且格式不统一,出现无法解析的值。
  • 把 changefreq 全部设为 hourly 或 always,与实际更新频率不符。
  • 已下架或长期无更新的页面仍留在 Sitemap 中,持续参与回访竞争。
  • 分片索引中各子 Sitemap 的 lastmod 互相覆盖,指向不一致。

三、核对顺序

  1. 抽样 20 至 30 个 URL,把 Sitemap 的 lastmod 与页面真实更新时间(正文、结构化数据、版本号)逐一对齐。
  2. 连续观察两次 Sitemap 生成结果,确认无变化页面的 lastmod 是否保持稳定。
  3. 检查时间格式是否符合 W3C 日期时间规范,是否带时区偏移。
  4. 按目录或内容类型分组,给更新频率不同的板块设置不同 changefreq,避免全站一刀切。
  5. 清理已失效、已合并、已 301 的条目,让 Sitemap 只保留有效入口。
  6. 把 lastmod 的生成逻辑挂到内容变更事件上,而不是挂在构建流程的固定步骤里。

四、与抓取预算的关系

抓取预算是有限的,站点体量越大越明显。当 Sitemap 无法帮助调度区分「变了」和「没变」,蜘蛛只能依赖自身的历史判断,回访会更依赖内链点击与外部链接的引导。此时如果内链层级本身偏深,新页面被发现的时间会进一步拉长。Sitemap 的价值在于把「哪些值得优先看」讲清楚,而不是把全部 URL 平铺出来。

五、修正后看什么

  • 新发布 URL 从提交到首次被抓取的间隔是否缩短。
  • 服务器日志中,真正更新过的页面回访间隔是否明显短于未更新页面。
  • 404、301 类 URL 是否已从 Sitemap 中消失。
  • Sitemap 抓取本身是否成功,是否出现解析报错或体积超限。

这些信号只是观察窗口,并不代表一定会带来收录或排名变化,但能让抓取调度拿到更准确的输入,减少无效回访,把有限的回访次数留给真正在更新的入口。