搜索抓取

Sitemap 的 lastmod 写不准,蜘蛛的抓取优先级会怎么变

很多站点的 Sitemap 看似完整,lastmod 却常常不可信:全站刷成同一时间、模板改动触发全量更新、时间格式错位,都会让蜘蛛的抓取调度失去参考。本文拆解 lastmod 在抓取优先级里的作用,梳理三类常见写法问题,并给出一套可执行的自查与修正方法。

搜索抓取

Sitemap 的 lastmod 写不准,蜘蛛的抓取优先级会怎么变

很多站长把 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 就已经放弃了。

上手前的自查

  1. 随机抽十条最近更新的 URL,核对 Sitemap 中的时间与页面实际改动时间是否一致。
  2. 检查生成逻辑,确认没有把文件生成时间当作 lastmod。
  3. 看看全站是否出现大量完全相同的时间戳。
  4. 检查时间格式是否带时区,有没有未来时间。
  5. 对比 HTTP Last-Modified 与 Sitemap lastmod,看是否明显冲突。
lastmod 不是写给搜索引擎看的装饰,而是你对“这个页面真的变了”的一次声明。声明得越准,蜘蛛回访时的判断就越省事。

最后提醒一句:Sitemap 和 lastmod 都只是线索,不能决定抓取结果。更根本的还是页面本身有稳定价值、内链能把地址送到蜘蛛面前、服务器在它来访时能正常响应。这几件事做到位,lastmod 才有一个可信的基础。