搜索抓取

Sitemap 的 lastmod 怎么写:时间戳、更新频率与蜘蛛的判断

Sitemap 里的 lastmod 常被当成催促蜘蛛抓取的工具,但它更像一个辅助信号。本文说明 lastmod 的实际作用、常见写法误区,以及怎样让时间戳与页面真实更新对齐,避免给抓取调度添乱。

搜索抓取

Sitemap 的 lastmod 怎么写:时间戳、更新频率与蜘蛛的判断

Sitemap 最基础的作用是交代 URL 清单,而 lastmod 字段则试图回答另一个问题:这个页面上次实质性变化是什么时候。对搜索蜘蛛来说,这是一条辅助信号,不是命令。它不会因为 lastmod 写了今天,就立刻放下其他页面来抓你;也不会因为没写 lastmod,就永远不抓。理解这一点,才能把字段写对。

lastmod 在抓取调度里的位置

蜘蛛决定是否重新抓取一个 URL 时,会综合历史抓取结果、页面重要性、内链变化、服务器响应、Sitemap 声明等信息。lastmod 的作用是:当蜘蛛已经看到这个 URL,并且需要判断“值不值得再跑一趟”时,提供一个内容新鲜度的参考。

如果 lastmod 长期准确,蜘蛛可能更愿意在页面更新后较快回访;如果它多次发现 lastmod 说变了、抓回来却和上次一样,这个字段的可信度就会下降。换句话说,lastmod 的价值来自准确性,而不是更新频率

常见写法误区

  • 每次部署都刷新全站时间戳。改了一个页脚或样式文件,所有 URL 的 lastmod 都变成当前时间,会让蜘蛛频繁白跑。
  • 使用未来时间。时间戳跑到当前时间之后,容易让抓取系统困惑,也不符合实际更新逻辑。
  • 格式不统一。有的写日期,有的写日期时间,有的缺时区,解析成本高且容易出错。
  • 把模板变化当成内容变化。导航、广告位、推荐模块更新,通常不算页面主体内容更新,不必改 lastmod。
  • 所有页面共用一个时间。看起来整齐,但等于没有提供有效信息。

怎样写更可信

优先只在实际正文、数据或关键信息变化时更新 lastmod。格式上使用 W3C Datetime,例如 2025-06-01T10:30:00+08:00。如果站点没有精确到秒的能力,写到日期也可以,但全站保持一致。

批量更新 Sitemap 时,可以按栏目或内容类型分别维护,不要因为重新生成文件就统一改时间。对于聚合页、列表页,如果只是新增了几条内容,是否更新 lastmod 取决于该页本身是否变化;如果列表顺序或摘要变了,更新是合理的。

一句话原则:lastmod 应尽量接近“用户能感知的内容变化时间”,而不是“文件生成时间”。

changefreq 和 priority 还要不要写

主流搜索引擎已明确表示基本忽略 changefreq 和 priority。它们不会因为写了 hourly 就每小时来,也不会因为 priority 是 1.0 就优先抓。保留这些字段通常不影响解析,但不必花时间调数值。把精力放在 lastmod 准确性和 URL 可访问性上更有意义。

与内链、HTTP 缓存配合

Sitemap 不是唯一的发现路径。内链更新、栏目入口、RSS 或其他引用,都可能让蜘蛛更早看到新 URL。对于已经抓过的页面,合理的 304 响应和缓存头可以减少重复下载,让抓取预算花在真正变化的页面上。如果 lastmod 准确,蜘蛛在条件请求时也更容易判断是否值得回访。

服务器稳定性同样关键。如果 Sitemap 里的 URL 经常超时或返回 5xx,lastmod 写得再及时也没有意义。先保证页面能稳定响应,再谈更新信号。

检查清单

  1. 抽查若干 URL,对比 lastmod 与页面实际更新记录是否一致。
  2. 确认时间戳格式统一,包含时区或至少保持同一种写法。
  3. 检查是否因模板、样式或部署导致全站时间被批量刷新。
  4. 去掉未来时间、空值和明显异常的时间戳。
  5. 在抓取日志中观察更新后页面的回访情况,而不是只看 Sitemap 提交时间。
  6. 如果字段维护成本过高,宁可减少更新范围,也不要制造虚假新鲜度。

lastmod 不是提速按钮,它更像一张便签:告诉蜘蛛这个页面什么时候真的变了。写对了,不会立刻带来排名或收录,但能减少无效抓取;写乱了,则会浪费双方的注意力。把时间戳和实际更新对齐,是站点运营里成本不高、却值得做扎实的一件小事。