搜索抓取

Sitemap 里的 lastmod 与分片:蜘蛛重抓会参考哪些信息

Sitemap 是内链之外的补充发现路径,不是收录保证。本文拆解 lastmod、changefreq、priority 几个字段的实际作用,以及分片与索引文件的常见维护问题,并给出一份日常检查清单,帮你减少蜘蛛读到的错误信息。

搜索抓取

Sitemap 里的 lastmod 与分片:蜘蛛重抓会参考哪些信息

先把 Sitemap 的定位摆正

不少站点把 Sitemap 当成主要的 URL 发现渠道,结果站内互链做得一片稀疏。实际上蜘蛛发现页面的顺序通常是:先访问首页和高频更新的频道页,再顺着站内链接逐层跟进,Sitemap 更多是补充遗漏。它的价值在于覆盖那些内链薄弱、层级较深,或者刚上线还没被链到的 URL。如果站内链接本身断得厉害,单靠 Sitemap 也补不回来。

所以讨论字段怎么写之前,先明确一点:这些字段影响的是判断依据,不是抓取结果的开关。

lastmod 写准,才有可能被参考

lastmod 表示这个 URL 内容的最后修改时间。它被参考的前提是准确。常见的问题是:改一次模板、批量发布、CMS 自动保存,全站 lastmod 就变成同一个时间戳。这种「所有页面同时更新」的信号没有区分度,蜘蛛很难据此判断哪些页面真的变了,久而久之这类字段就更容易被忽略。

  • 只在正文内容发生实质变化时更新,导航、样式调整不要触发
  • 时间格式保持统一,带时区,避免同一份文件里混用多种写法
  • 如果维护成本太高,宁可不写,也不要批量刷一个假时间

对于更新频繁的资讯类页面,准确的 lastmod 相对更有用;对于长期不动的说明页,写不写差别不大。

changefreq 与 priority:参考价值已经有限

changefreq 描述预期更新频率,priority 表示页面在站点内的相对重要度。这两个字段的实际影响这些年被大幅稀释,多数情况下不再作为主要依据。写的时候保持内部逻辑一致就够了:首页 priority 高一些,更新频繁的栏目 changefreq 偏 daily,但不要指望靠调高数值换来更多抓取。

更常见的坑是自相矛盾:一个 priority 写 1.0 的页面,lastmod 却是两年前。这种不一致反而削弱整份文件的可信度。

分片与索引文件:大站要留意边界

单个 Sitemap 有 URL 条数上限,超过就要拆成多个子文件,再用一个索引文件把子文件列出来。这里容易出现几类问题:

  • 新增了子文件,但索引文件没同步更新,蜘蛛根本找不到
  • 子文件里混着已经 404 或已经重定向的旧 URL
  • 多个分片内容重叠,同一批 URL 被反复提交

分片本身并不复杂,麻烦在长期维护。每次改版、下线栏目、调整 URL 规则,都要回头确认清单和线上是否还一致。过期条目越多,整份文件的参考价值越低。

抓取路径稳不稳,最后还是要看服务器

Sitemap 提交之后,蜘蛛会挑时间去读取。如果站点响应慢、频繁超时,读取这个文件本身就会占用抓取配额,反而挤掉正文页面的抓取机会。同样的道理,Sitemap 文件也要能快速返回,不要走复杂查询,也不要经过多层重定向。

把 Sitemap 做成静态文件,通常比做成实时生成的动态接口更稳。

一份日常检查清单

  1. Sitemap 地址已在 robots.txt 中声明,且可以正常访问
  2. 清单里只保留返回 200、可被索引的页面
  3. lastmod 与内容实际更新时间对得上
  4. 分片与索引文件同步更新,没有死链和重复
  5. 内链结构不依赖 Sitemap 兜底,重要页面都有站内入口
  6. 定期从服务器日志里确认清单中的 URL 是否真的被抓过

这些动作不保证任何结果,但能减少「蜘蛛拿到的信息本身就是错的」这一类问题。URL 发现和重抓判断本来就是多个信号叠加的过程,Sitemap 只是其中一环,把它做干净、做准确,剩下的交给链接结构和站点稳定性。