Sitemap 常被当成一个可以“向蜘蛛交代优先级”的文件,于是很多站点在里面认真填写 priority 和 changefreq,希望蜘蛛多来几次。实际效果往往和预期相反:这两个字段写得再整齐,也很少改变抓取行为。
Sitemap 是线索,不是指令
Sitemap 的核心价值是帮助蜘蛛发现 URL,尤其是那些内链较少、位置较深的页面。它更像一张地图,而不是一份调度表。蜘蛛拿到地图之后,仍然会按自己的判断决定先抓什么、多久抓一次。
priority 与 changefreq 为什么基本被忽略
主流搜索引擎的官方文档都提到,这两个字段不会影响排序,抓取调度也基本不参考。原因不难理解:
- 抓取调度依赖 URL 的历史更新频率、响应速度、站点整体质量等自身信号,而不是站点自述;
- 任何站点都可以把 priority 写成 1.0,字段本身缺少区分度;
- changefreq 是站点对更新节奏的估计,与实际内容变更经常对不上。
换句话说,把 priority 全部改成高值,并不会让蜘蛛更重视这些页面。
lastmod 仍然有用,但前提是真实
三个字段里,lastmod 是少数还会被参考的字段,因为它描述的是已经发生的事实。但前提是它足够准确:
- 格式建议使用 W3C Datetime,并带上时区,例如 2024-05-01T09:30:00+08:00;
- 只在正文、价格、库存等实质内容变化时更新,改页脚或换广告位不必动;
- 不要每次生成 Sitemap 就把全站 lastmod 刷成当前时间;
- 如果全站 lastmod 都是同一个时间点,这条信息基本等于没有。
当 lastmod 长期可信时,蜘蛛更容易判断哪些页面值得重新抓取;反之,一旦被判定为不可信,这个字段就会被一起忽略。
Sitemap 真正影响抓取的地方
与其纠结字段,不如把下面这些细节做对,它们对 URL 发现和抓取节奏的影响更直接:
- 只收录返回 200 且允许索引的 URL,canonical 指向自身;
- 不要把重定向链、404、noindex 页面放进 Sitemap;
- 单个文件不超过 5 万条 URL、未压缩不超过 50MB,超出时使用分片;
- 按内容类型拆分文件,例如文章、商品、栏目各一份,便于排查问题;
- 让 Sitemap 与站内链接互相印证。孤岛页面即使进了 Sitemap,抓取往往也更慢、更不稳定。
一份可执行的维护清单
维护 Sitemap 不需要太复杂的流程,关键是保持稳定和真实:
- 新内容发布后自动写入对应分片,避免每次全量重生成;
- 通过服务器日志或站长工具,观察 Sitemap 文件本身被抓取的频率;
- 定期抽查其中的 URL 是否仍返回 200,及时清理已下线页面;
- 调整 URL 结构时同步更新 Sitemap,并保留必要的重定向;
- 关注“已提交”与“已抓取”之间的差距,差距较大时优先检查内链结构和服务器响应。
两个常见误区
把 priority 改成 1.0 不会让页面排得更靠前,把 changefreq 写成 hourly 也不会让蜘蛛每小时都来。
蜘蛛是否来、来得勤不勤,更多取决于站点的历史抓取表现、内容是否真的更新,以及服务器能否稳定快速响应。字段填得再漂亮,也替代不了这几点。
回到抓取本身,Sitemap 最实际的作用是稳定、准确地告诉蜘蛛“这里有哪些可访问的 URL”。一份干净、及时更新的清单,比精雕细琢的 priority 数字更有意义。