搜索抓取

Sitemap 里的 lastmod 与 changefreq:蜘蛛真的会看这些字段吗

Sitemap 不只是 URL 清单,字段写法会影响蜘蛛对这份文件的信任度。本文说明 lastmod 该怎么填、changefreq 与 priority 的实际分量有多大,以及怎样用日志和对照观察来判断字段是否真的改变了抓取节奏,避免用假时间戳换来更差的抓取表现。

搜索抓取

Sitemap 里的 lastmod 与 changefreq:蜘蛛真的会看这些字段吗

Sitemap 常被当成一份「交给蜘蛛的 URL 清单」,但清单里那几个字段——lastmod、changefreq、priority——写法不同,蜘蛛使用这份清单的方式也不同。写得不准不会直接让页面不被抓,却会让整份文件的可信度下降,进而影响它在抓取调度里被参考的程度。

三个字段的实际分量并不一样

  • lastmod:主流搜索引擎会参考,用来判断这个 URL 是否属于「内容有变动、值得重新排一次抓取」。
  • changefreq:基本被忽略。蜘蛛更相信自己积累的历史更新数据,而不是站点自己声明的更新节奏。
  • priority:同样基本被忽略。页面之间的重要程度,由内链结构、外链和点击行为共同决定,不由站点单方面声明。

所以,把精力放在 lastmod 的准确性上,比反复调整 changefreq 和 priority 更划算。

一份字段长期与事实不符的 Sitemap,最可能的后果不是「被惩罚」,而是「被当成低信息量的文件」——蜘蛛照样来,只是不再优先听它的。

lastmod 怎么写才算有效

lastmod 的价值建立在「准确」两个字上,一旦掺水,参考价值就会打折。落地时注意几点:

  • 使用 W3C Datetime 格式,并带上时区,例如 2024-06-11T09:20:00+08:00。不带时区的时间容易被误读。
  • 只在正文发生实质变化时更新。改模板、换广告位、调整推荐位,都不该刷这个时间。
  • 避免批量刷新。一次改版把全站时间戳都改掉,等于告诉蜘蛛「所有页面都变了」,反而稀释了每一条的可信度。
  • 如果使用 Sitemap 索引文件,索引里的 lastmod 也应随子文件的更新而变化,不要长期不动。
  • 只收录返回 200 且允许抓取的规范地址。把 301、404、noindex 的 URL 混进去,会拉低整份文件的质量。

changefreq 和 priority:留着还是删掉

删掉不会出错。如果为了内部流程或工具链方便而保留,至少让取值贴近事实:日更栏目就别写 hourly,季度更新的栏目也别写 daily。priority 全站都填 1.0,效果等同于没填——它只能在同一份文件内部做相对排序,而且这个排序蜘蛛未必采纳。

如何判断字段是否真的起了作用

字段效果没法直接看到,只能通过抓取行为间接观察。可以按下面的顺序做一轮验证:

  1. 从服务器日志中按 URL 统计抓取次数,标出每个 URL 实际的 lastmod 更新时间,看两者是否存在先后关系。
  2. 挑两组体量、层级相近的页面做对照:A 组在内容变更时更新 lastmod,B 组不更新或统一写固定值。
  3. 持续观察 2 到 6 周,比较两组的重抓间隔与抓取总量差异。
  4. 把结论落到流程里:让发布系统在正文变更时自动写入时间戳,而不是靠人工维护。

需要提醒的是,新页面被发现的主要通道仍然是内链和各类提交入口,Sitemap 更多是补充和声明,不适合当作唯一的发现手段。

几个反复出现的误区

  • 把 lastmod 当成「催抓开关」:更新了不等于马上被抓,它只是提高被重新排队的可能性。
  • 用脚本每天自动刷全站时间戳:短期内看不出问题,几个月后这份 Sitemap 的参考价值基本归零。
  • 认为 priority 高的先抓:抓取顺序受队列、服务器响应、页面重要度等多重因素影响,单字段无法决定。
  • 把 Sitemap 当成必须存在的文件:小站且内链清晰时,缺了它通常不会影响抓取;写了就要写准。

把 Sitemap 当成一份需要长期维护的声明文件,而不是一次性提交的清单,字段问题自然就少了。