搜索抓取

Sitemap 里的 lastmod 怎么填:更新标记与重抓判断的关系

Sitemap 里的 lastmod 常被随手填成全站统一时间,导致更新信号失真。本文说明 lastmod 是给谁看的、常见填法会带来什么问题、如何按内容实质变更来判断,以及怎样与响应头里的 Last-Modified、ETag 保持一致,并给出一份可以落地的检查流程。

搜索抓取

Sitemap 里的 lastmod 怎么填:更新标记与重抓判断的关系

Sitemap 里的 lastmod 是很多人随手填、又很少有人回头检查的字段。它不像 robots.txt 那样一错就被发现,也不像 404 那样立刻有报错提示,填错了通常什么都不会发生——只是蜘蛛对“这个页面值不值得再来”的判断慢慢偏离实际。下面说清楚 lastmod 是给谁看的、怎么填相对可靠,以及哪些情况下不必在它上面花太多精力。

lastmod 到底给谁看

lastmod 是给抓取调度用的参考值,不是给用户看的发布时间。蜘蛛在决定要不要重抓某个 URL 时,会综合站点历史抓取表现、页面本身的更新节奏,以及其他更新信号,比如响应头里的 Last-Modified、ETag,以及带条件请求时是否返回 304。lastmod 只是其中一个输入项,但它有个特点:这是站点自己声明的。

也就是说,lastmod 不保证重抓,填了新时间也不保证第二天就来。它的作用是让调度在做取舍时多一个依据,而不是一个开关。一旦它和实际内容长期对不上,参考价值就会打折。

常见的几种填法及其问题

全站统一时间

每次生成 Sitemap 都把全站 lastmod 刷成当前时间,是最常见也最容易被忽略的做法。表面上“看起来在更新”,实际上等于告诉调度所有页面都在同一秒变了。这类信号无法区分重点,长期下来容易被当成噪声。

只在发布时写一次

页面初次发布时写上一个时间,之后改了正文也不动它,会让真正有实质更新的页面被低估。尤其是价格、库存、政策条款这类改动幅度不大、但影响用户判断的内容。

用模板渲染时间

有些站点直接输出模板里的“最后修改时间”变量,结果列表页、聚合页每次访问时间都在变。这类页面本身没有需要索引的独立内容,lastmod 抖动只会放大重复抓取。

相对可靠的填法:跟着内容走

比较稳妥的原则是:lastmod 只在页面正文出现用户可感知的变化时才更新。可以按这几类来判断:

  • 正文、标题、主要段落有增删改,属于应更新。
  • 结构化数据里的关键字段变化,比如价格、评分、库存状态、营业时间,属于应更新。
  • 主体配图、视频更换,通常不值得单独更新 lastmod,除非页面信息依赖它。
  • 底部广告位轮换、推荐位调整、访问计数器,不属于内容更新。
  • 模板改版导致全站 HTML 变化,但正文未动,不必逐个刷新 lastmod。

如果站点内容量大,可以把判断收敛成一条规则:写入内容库时记录一次“内容版本时间”,Sitemap 直接读这个字段。这样 lastmod 天然跟着内容走,不需要人工维护。

HTTP 层也有更新信号,两边要一致

除了 Sitemap,蜘蛛还会看响应头。服务端给出的 Last-ModifiedETag 如果和 Sitemap 里的 lastmod 明显矛盾,调度端往往更依赖实际响应,毕竟那是它亲自验证过的。

常见的不一致:Sitemap 写着上周更新,响应头里的 Last-Modified 却是三个月前,并且带 If-Modified-Since 回来时仍然返回 200 和完整正文。这种情况下,重复下载的成本会落在站点自己身上。

所以条件允许的话,让内容库的版本时间同时驱动 Sitemap 的 lastmod 和响应头的 Last-Modified,并确保支持 304。蜘蛛带条件请求回来时返回 304,比返回 200 更省服务器,也更快。

一个可以落地的维护流程

  1. 确认 Sitemap 里的 lastmod 来源字段,是内容版本时间还是生成时间。
  2. 抽取 20 到 50 个近期确实有内容变更的 URL,逐一比对其 lastmod 与实际改动时间。
  3. 在服务器日志里观察这些 URL 是否被重新抓取,以及抓取时是否返回 304。
  4. 如果大量 lastmod 与实际不符,先修生成逻辑,再观察一段时间的抓取变化。
  5. 把“内容版本时间”写进发布流程,避免长期依赖人工填写。

什么时候不必纠结这个字段

更新极少的企业介绍页、联系方式、历史归档类页面,lastmod 精确与否影响很小。这类页面本来就不需要频繁重抓,准确填上一次发布的时间即可。同理,分页、标签聚合、筛选结果这类页面,重点往往不是 lastmod,而是它们该不该出现在 Sitemap 里——如果本身不被期望被索引,纠结更新时间意义不大。

把精力放在真正会变化、且变化后需要被重新认识的内容上,比全站统一刷新时间更有意义。lastmod 不是排名手段,它只是让调度的判断更接近事实的一个细节。