网站收录

sitemap 里的 lastmod 别乱填:时间戳失真会消耗什么

sitemap 里的 lastmod 是给蜘蛛的更新提示,不是催抓开关。全站统一填、访问时动态生成、构建时顺手刷新,这些常见做法会让信号逐渐失效,真正改过的页面反而被排到后面。本文说明哪些改动才算实质更新、它和响应头等时间信号如何对齐,并给出一套可落地的填法与排查顺序。

网站收录

sitemap 里的 lastmod 别乱填:时间戳失真会消耗什么

lastmod 说的是什么

sitemap 里的 lastmod 是给蜘蛛的一个提示:这个 URL 的内容上一次发生实质性变化是什么时候。它不是发布时间,也不是服务器上文件的修改时间,更不是你希望蜘蛛来抓的时间。填它的唯一目的,是让蜘蛛在比较新旧页面时,优先把时间花在真正变过的地址上。

几种很常见的乱填方式

  • 全站统一填成同一个时间戳,所有 URL 一模一样。
  • 页面每次被访问时动态生成当前时间,等于永远都是“刚更新”。
  • 每次发布站点、跑一次构建脚本,就顺手把所有 URL 的时间刷成当天。
  • 只改了模板、广告位或推荐位,正文没动,也更新 lastmod。
  • 时间格式写得五花八门,时区也没标清楚。

时间戳失真之后会发生什么

蜘蛛对 sitemap 的信任是逐步建立的。当你反复声明“全站刚更新”,但抓回来发现内容和上次几乎一样时,这个提示的价值就会打折。结果通常是两种:一是蜘蛛干脆忽略 lastmod,按自己的节奏重抓;二是按你给的错误时间分配抓取,把预算花在没有实质变化的页面上,真正改过的页面反而排到后面。

lastmod 不是催抓工具,它是一个可信度信号。失真一次影响不大,长期失真等于自动放弃这个信号。

哪些改动才算实质性更新

判断标准可以很朴素:如果用户重新访问这个页面,看到的内容和上一次有区别,那就算更新。

  • 正文新增、删减、改写,标题或描述性文案调整。
  • 商品价格、库存状态、活动时间等关键字段变化。
  • 结构化数据里的核心信息变化。
  • 页面主体结构被替换,而不是在页面上加了一段推荐。

反之,页脚的备案信息、页头导航、侧栏推荐位的轮换,通常不值得更新所有页面的 lastmod。评论如果确实是页面主体内容的一部分,可以单独考虑。

它和其他时间信号要对得上

lastmod 不是孤立存在的。服务器返回的 Last-Modified 响应头、页面上写给用户看的更新时间、结构化数据里的 dateModified,这几个地方如果互相矛盾,蜘蛛只能选择不信。做法上尽量让它们指向同一个真实时间,而不是各自维护一套。

另外,lastmod 不要填未来时间,也不要早于该 URL 被创建的时间。有些站点为了“排前面”把时间往后写,实际效果往往是反向的。

一个可执行的填法

  1. 由内容侧自动产出时间:内容真正保存并生效的时刻,而不是构建、部署或访问的时刻。
  2. 使用统一的 ISO 8601 格式,并带上时区,例如 2024-05-01T09:30:00+08:00。
  3. 新页面首次提交时带 lastmod,之后只在实质更新时改。
  4. 批量模板类页面可以统一兜底,但不要覆盖单页的真实时间。
  5. 定期抽查:从 sitemap 里随机抽一批 URL,和页面实际内容对比,看时间是否对得上。

排查顺序

如果你怀疑 lastmod 有问题,可以按这个顺序看:先确认是否所有 URL 共享同一个时间戳;再看是否由服务器动态生成;然后对比日志里蜘蛛对这些 URL 的抓取频率,是不是明显偏向某些不该频繁重抓的页面;最后检查响应头与页面上的时间是否一致。多数问题在第一步就能看出来。

把 lastmod 填准,不会直接带来收录,但它能让你的更新信号保持干净。蜘蛛愿意相信你给的时间,后面很多事情才有讨论的基础。