Sitemap 里的 lastmod 经常被当成一个可填可不填的字段。实际上,它是蜘蛛判断某个 URL 是否值得重新抓取的重要参考。写对了,蜘蛛更愿意按地图回来看看;写乱了,整份 Sitemap 的可信度都会受影响。
lastmod 对蜘蛛意味着什么
Sitemap 主要承担两件事:让蜘蛛发现 URL,以及告诉蜘蛛这些 URL 大概发生了什么变化。lastmod 就是后者的时间标记。它不是一个强制指令,蜘蛛不会因为 lastmod 更新就立刻抓取,但它会和页面内容、内链变化、历史抓取记录一起,影响重新抓取的优先级。
如果一份 Sitemap 里的 lastmod 长期不可信,蜘蛛可能会降低对这份地图的参考权重,转而更多依赖站内链接和外部入口来发现变化。
三种常见写法,会让 lastmod 失去意义
- 全站 URL 使用同一个时间戳,通常是每次生成 Sitemap 的时间。
- 写了一个未来时间,比如下个月或明年。
- 正文没有任何修改,但 lastmod 每天甚至每次请求都在变。
这三种情况都在传递同一个信号:这个时间戳和页面真实变化没有关系。蜘蛛见过几次之后,就不会再把 lastmod 当作有效线索。
可用的 lastmod 格式
推荐使用 W3C 日期时间格式,并带上时区,例如:2025-03-01T08:30:00+08:00。只写日期也可以,比如 2025-03-01,但精确到时间更利于表达同一天内的多次调整。不要使用自然语言时间,也不要用时间戳数字。
时区不是可选项。如果服务器在海外,生成时间又是另一套时区,很容易出现“页面显示昨天更新,Sitemap 写明天”的混乱。
怎么让 lastmod 和内容更新保持一致
- 只在实际修改正文、标题、主要模块或结构化数据时更新。
- 页面可见的更新时间,尽量和 lastmod 保持一致。
- 列表页、聚合页可以用其中最新一条内容的时间,但不要每次抓取都变。
- 不要为了“提醒蜘蛛”而人为刷新 lastmod。
如果站点使用 CMS,最好让系统自动记录内容最后修改时间,而不是在生成 Sitemap 时统一写当前时间。手工维护时,可以按栏目分批检查,避免一次性改全站。
Sitemap 分片时,lastmod 要分清两层
站点变大后,Sitemap 通常会拆成索引文件和多个分片。索引文件里的 lastmod 表示分片文件本身的更新时间,分片内每个 URL 的 lastmod 才表示页面更新时间。两者不要混在一起写。
分片文件如果只是重新生成、内容没变,索引里的 lastmod 也可以不频繁改动。频繁变动会让蜘蛛反复回来检查,却看不到实际变化,反而浪费抓取机会。
和内链、日志配合看
Sitemap 不是唯一的发现路径。重要页面更新后,如果内链位置、导航或列表页没有同步变化,蜘蛛仍然可能按旧节奏访问。可以把 lastmod 变化、内链调整和服务器日志放在一起观察:哪些 URL 的 lastmod 更新后蜘蛛较快回访,哪些长期没有动静。
日志里如果出现大量“只抓 Sitemap、不抓页面”的记录,通常说明地图里的 URL 质量或时间信号需要检查。此时先别急着加大提交频率,先把 lastmod 写准,把可抓取的页面整理清楚。
lastmod 的作用不是催促蜘蛛,而是减少它的判断成本。时间戳越接近真实变化,蜘蛛越容易把抓取机会用在值得的 URL 上。
Sitemap 可以定期提交,但 lastmod 不必跟着提交动作一起刷新。把更新时间记录准确,让地图和页面实际状态对得上,比频繁修改时间戳更有用。