很多站长把 Sitemap 当成一份交给蜘蛛的 URL 清单,只关心里面有没有漏地址,却很少检查每条 URL 后面跟着的 lastmod 是否可信。这个字段不像标题、描述那样参与页面理解,但它会影响一件事:蜘蛛下次要不要优先回来看这个地址。
lastmod 在抓取调度里的位置
Sitemap 本身只是发现 URL 的渠道之一。蜘蛛读它,主要是拿到两类信息:一批从没见过的地址,以及一批声称有更新的老地址。lastmod 就是判断后者的依据。
搜索引擎通常把 lastmod 当作参考信号,而不是必须执行的指令。如果你长期如实标注,它可能更愿意按这个时间安排回访;如果标注经常和实际内容对不上,这个字段的可信度会下降,最终被忽略。
三种常见的写法问题
全站被刷成同一个时间
不少 CMS 插件默认把 Sitemap 的生成时间写成 lastmod,于是每次重新生成文件,所有 URL 的时间都被刷新一遍。蜘蛛看到的是全站同一秒全部更新,这种信号没有区分度,等于没写。
把模板改动当成内容更新
改了一次页脚、换了一个广告位、调整了导航顺序,如果这些操作触发了全部页面的 lastmod 更新,蜘蛛回来看到的是一批内容几乎没变的页面。反复几次之后,这批 URL 的更新信号就会被降权处理。
格式不规范或时间错位
用本地时间却不写时区、月份和日期写反、把时间标到未来,都可能让解析结果异常。写未来时间尤其容易出问题,蜘蛛无法把一个还没发生的时间点当作回访依据。
怎么让 lastmod 更接近真实
- 只有正文、标题、价格、库存等实质内容变化时才更新,纯样式调整不要动它。
- 批量改版时分批发布,避免一次把几万个 URL 的时间改成同一分钟。
- 使用带时区的标准格式,与页面上的发布时间共用同一套时间源。
- 已删除或已重定向的 URL 不靠 lastmod 通知,直接从 Sitemap 里移除更清楚。
光有 lastmod 还不够
蜘蛛判断一个页面是否需要重抓,还会参考 HTTP 响应头里的 Last-Modified、页面结构的稳定性,以及站内其他链接指向它的变化。如果 Sitemap 说刚刚更新,服务器返回的修改时间却是半个月前,两边矛盾会让信号互相抵消。
另外,Sitemap 文件本身也要能被稳定抓取。如果它体积过大、响应过慢,或者要经过多次跳转才能拿到,蜘蛛可能还没读到 lastmod 就已经放弃了。
上手前的自查
- 随机抽十条最近更新的 URL,核对 Sitemap 中的时间与页面实际改动时间是否一致。
- 检查生成逻辑,确认没有把文件生成时间当作 lastmod。
- 看看全站是否出现大量完全相同的时间戳。
- 检查时间格式是否带时区,有没有未来时间。
- 对比 HTTP Last-Modified 与 Sitemap lastmod,看是否明显冲突。
lastmod 不是写给搜索引擎看的装饰,而是你对“这个页面真的变了”的一次声明。声明得越准,蜘蛛回访时的判断就越省事。
最后提醒一句:Sitemap 和 lastmod 都只是线索,不能决定抓取结果。更根本的还是页面本身有稳定价值、内链能把地址送到蜘蛛面前、服务器在它来访时能正常响应。这几件事做到位,lastmod 才有一个可信的基础。