Sitemap 里的 lastmod 字段,很多站点是顺手生成的:只要页面被构建过,就把时间写成当下。这样写看起来勤快,实际会让这个字段失去参考价值。蜘蛛安排下一次来访时会参考多个信号,lastmod 是其中比较直接的一个,但它更像一条线索,而不是一个开关。
lastmod 在告诉蜘蛛什么
lastmod 表达的只有一件事:这个 URL 对应的内容,最后一次发生实质性变化是什么时候。它不表示模板改版,不表示导航调整,也不表示某个组件重新渲染。蜘蛛把 Sitemap 里的 lastmod 和自己上次抓取该页面的记录做比对,如果时间明显更新,这个 URL 在待抓队列里的优先级可能被提前。
反过来,如果每次生成 Sitemap 都刷新时间,而页面内容其实没变,蜘蛛几次抓下来发现没有差异,对这个字段的信任度自然会降低。
几种常见写法与它们的后果
- 每次生成都写当前时间:短时间内大量 URL 的时间戳一起跳动,看起来像全站同时更新,容易造成无效抓取。
- 写死一个固定值:长期不变,蜘蛛无法从中判断新鲜度,这个字段基本等于没写。
- 格式不统一:有的带时区、有的不带,有的用本地时间,解析结果可能出现偏差。
- 只给部分 URL 写:同一批新页面里有的有时间、有的没有,抓取排队的先后就容易出现偏差。
- 写未来时间:时间戳跑到当前时间之后,这条记录的可信度会打折扣。
相对靠谱的写法
- 只在这一页的正文、标题、结构化信息等实质内容变化时更新,改样式、换图片尺寸不算。
- 时间取自数据层的真实更新时间字段,而不是构建时刻或发布时间。
- 统一用带时区的完整格式,全站保持一致。
- 批量更新时,避免把上千个 URL 的时间戳压在同一秒,可以让它们落到各自真实的修改时间上。
- 对长期没有变化的页面,保留原来的时间即可,不需要为了显得新而刷新。
除了 lastmod,还有哪些再访线索
- 页面自身返回的 Last-Modified 与 ETag,蜘蛛重复抓取时会拿它们做比对。
- 站内新增的内链,尤其是从更新频繁的列表页或首页指向的链接。
- 站点整体的更新节奏,长期稳定产出新内容的站点,蜘蛛来访会更规律。
- 外部新增的引用链接,也会间接影响某个 URL 被再次走过的时间。
怎么验证写得对不对
可以从抓取日志里挑几个 URL,看它们两次被抓的时间间隔,和 Sitemap 里记录的时间戳对不对得上。如果时间戳一直在动、抓取频率却没变化,多半说明这个字段没被采信。也可以在站点地图报告里观察同一批 URL 的解析情况,确认时间格式能被正常读取。
lastmod 写准只是给蜘蛛提供了一条判断依据,不代表页面一定会被更频繁地抓取。它的价值在于减少噪声:让真正的更新被发现,让没变的页面少被打扰。
把时间字段写实,配合稳定的抓取通路和清晰的内链结构,URL 发现和再访才会慢慢进入一个可预期的节奏。