lastmod 在抓取调度里扮演什么角色
Sitemap 里的 lastmod 不是给用户看的字段,它主要服务于蜘蛛的抓取调度。蜘蛛已经知道这个 URL 存在,但它不确定内容有没有变化。lastmod 相当于站点给出的一个声明:这个页面在某天某时更新过。当这个声明稳定可信时,蜘蛛会更愿意按它来安排重新抓取的时间——新近更新的页面排在前面,长期没动的页面靠后。
这里有个前提:可信。蜘蛛并不盲目采信这个字段,它会拿实际抓取结果去核对。如果声明与内容不符,字段的参考价值会被逐步调低,直到被直接忽略。
几种把 lastmod 写坏的方式
全站统一时间戳
每次生成 sitemap 时,把所有 URL 的 lastmod 都刷成当前时间。这在技术上最省事,但等于告诉蜘蛛“全站每一秒都在变”。当蜘蛛按这个时间去抓,却发现页面内容和上次一模一样,这个字段就失去了参考意义。
只改格式不改逻辑
格式要符合 W3C 日期规范,比如写成 2025-03-18,或者带上时区的完整写法。格式错误会让整个字段解析失败,等于压根没写。
内容改动与字段脱节
编辑改了正文,但 sitemap 是静态文件没重新生成;或者反过来,后台每次保存草稿都刷新时间。两种偏差都会让 lastmod 与实际情况对不上。
信任被消耗之后,抓取路径会怎么变
这不是立刻生效的惩罚,更像是逐渐失去一条快捷通道。表现通常有几层:
- 蜘蛛对 sitemap 的抓取频率下降,访问间隔被拉长;
- 调度重新回到依赖内链和外部链接,发现与重抓的节奏变慢;
- 新发布的内容要等更久才被重新访问,因为少了一个明确的“更新信号”。
换个角度说,站点运营少了一个低成本的沟通渠道。蜘蛛还是会继续抓取站点,只是更依赖它自己摸索出来的路径。
写好 lastmod 的几条实操建议
- 只在内容实质变化时更新。改标题、改正文、改主要结构化数据算变化;只调整一个模块的位置不算。
- 时间精确到天通常就够。多数站点不需要精确到秒,过度精确反而容易暴露是程序批量生成的。
- 子地图各自维护。把 sitemap 拆成多份时,每份文件的 lastmod 按各自内部的最大时间取,不要全站一把刷。
- URL 消失时从 sitemap 移除。返回 404 或已经合并的 URL 留在里面,会持续消耗这条通道的可信度。
- 时间不要写到未来。服务器时区配置错误常造成这种结果,蜘蛛核对时会直接判为异常。
changefreq 和 priority 基本不必再花心思
这两个字段在主流搜索引擎的抓取调度中早已不参与计算,填了也不会被采纳。与其花时间给页面定优先级,不如把 lastmod 的准确性做扎实。真正的优先级,蜘蛛是综合内链位置、外链、访问情况等信号自己判断的。
怎么验证字段有没有被采信
一个比较直接的观察方法是看服务器日志里蜘蛛访问 sitemap 的规律:如果它大致按你声明的更新节奏来访,说明这条通道还在正常工作;如果每次都是固定间隔来一趟、不再参考 lastmod,说明这个字段的权重已经被降低了。同时也可以对照被重新抓取的 URL 分布,看新更新的内容是否比其他页面更快被再次访问。
把 lastmod 当成一份对蜘蛛的承诺:写下的时间,站点就应当能对应到一次真实的内容变化。
它不复杂,也不需要额外工具,只是需要后端或 CMS 在更新时认真回写一次时间戳。相比反复调整内链和外链,这件事的投入产出比往往被低估。