搜索抓取

Sitemap 到底被怎么读:索引文件、分片与 lastmod 的取舍细节

Sitemap 不是交给搜索引擎就一定会被逐条读取的清单。本文从索引文件、分片数量、lastmod 可信度、字段规范几个角度,说明蜘蛛实际读取 Sitemap 的顺序与取舍,以及它和内链、入口页之间的分工,帮助你把这个入口用得更有价值。

搜索抓取

Sitemap 到底被怎么读:索引文件、分片与 lastmod 的取舍细节

Sitemap 常被理解成一份“交给搜索引擎就能全收录”的清单。实际使用中它更像一个发现通道:蜘蛛会读,但不一定逐条按顺序处理,处理节奏也和站点规模、更新频率、其他入口信号有关。理解它被读取的方式,比反复提交要有效得多。

Sitemap 是入口,不是保证

Sitemap 的作用是把 URL 送进“已知”集合。进入已知之后,还要经过抓取、解析、评估,才可能进入索引。所以看到 Sitemap 里的地址长期没被抓取,先别急着重新提交,先确认这些 URL 是否有内链支撑、是否值得占用抓取资源。

索引文件与分片:一次能读多少

规模稍大的站点通常用 sitemap 索引文件(sitemap index)指向多个子 Sitemap。蜘蛛会先读索引,再按需读取子文件。这里有几个容易忽略的点:

  • 单个文件里的 URL 数量有上限,超出部分不会被读,必须拆分成多个子文件。
  • 索引文件本身也要保持简洁,只列子 Sitemap 地址和最后更新时间,不要混入普通页面链接。
  • 子文件按内容类型或栏目拆分,比按时间随便切更容易被分批读取。
  • 所有子文件都要能独立返回正常状态码,任何一个 404 或 5xx 都会让这一片暂时失效。

换句话说,蜘蛛不是一次性读完整个索引,而是有选择地抓取子文件。分片方式决定了它先看到哪一批 URL。

lastmod 的可信度

lastmod 是少数能影响复查节奏的字段,但前提是它真实且稳定。如果每次生成 Sitemap 都把全站时间刷成当前时刻,这个字段很快就会被忽略,等于自己放弃了它。更实用的做法是:只有正文、价格、库存这类实质变化才更新 lastmod,模板调整、导航改动不必改动它。

建议的字段写法

  • loc 用绝对地址,与页面最终 URL 完全一致,避免跳转。
  • lastmod 用 W3C 格式的时间,带时区更稳妥。
  • changefreq 和 priority 现在更多是参考值,写不写影响都不大,不必为此纠结。
  • 不要放 noindex、重定向或需要登录的地址,它们会稀释这份清单的价值。

常见配置问题

  • Sitemap 声明在 robots.txt 里,但地址本身返回 301,蜘蛛要多跳一次才拿到内容。
  • Sitemap 里的 URL 和站内实际链接不一致,比如带不带尾斜杠、大小写不同,等于把同一页面报了两遍。
  • 分片文件长期不更新,新增内容一直没进索引文件,蜘蛛自然看不到。
  • 把 Sitemap 当主要发现手段,内链却几乎为零,结果 URL 被知道但拿不到足够的权重信号。

它和内链、入口页的分工

Sitemap 擅长覆盖广度,尤其是新页面、深层页面和站内链接较少的地址;内链擅长传递层级和重要性,让蜘蛛判断哪些页面更值得优先抓;入口页和栏目页则决定蜘蛛进入站点的第一跳。三者重叠越多,效果越好,但谁也不能完全替代谁。只靠 Sitemap 而不修内链,通常表现为“被发现得快、被复查得慢”。

一个简单的自查顺序

  1. 先确认 Sitemap 能被正常访问,索引文件与子文件都没有错误状态码。
  2. 抽查若干 URL,看它们在站内是否至少有两条可抓内链指向。
  3. 检查 lastmod 是否被无差别刷新。
  4. 对照抓取日志,看 Sitemap 中的地址是否出现过,出现后是否有复查。
把 Sitemap 当成一份持续维护的清单,而不是一次性的提交动作。它解决的是“有没有被知道”,抓取和索引仍要靠内链、内容质量和服务器稳定性一起支撑。

当 Sitemap 的字段稳定、分片合理、链接与站内一致,它在 URL 发现环节的作用会明显提升;但它始终只是抓取路径上的一环,不是终点。