搜尋抓取

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 当成一份需要長期维護的声明文件,而不是一次性提交的清單,字段問题自然就少了。