搜尋抓取

Sitemap 的 lastmod 寫不准,蜘蛛還會按它来抓吗

Sitemap 里的 lastmod 是站点向蜘蛛声明内容更新時間的一個信号,用得好能让重新抓取更及时,用不好則會被逐步忽略。本文讲清它的作用机制、常见的几種寫坏方式、信任被消耗後抓取节奏會有什么變化,以及几條可以直接落地的寫法建议。

搜尋抓取

Sitemap 的 lastmod 寫不准,蜘蛛還會按它来抓吗

lastmod 在抓取調度里扮演什么角色

Sitemap 里的 lastmod 不是给用戶看的字段,它主要服務于蜘蛛的抓取調度。蜘蛛已经知道這個 URL 存在,但它不确定内容有没有變化。lastmod 相当于站点给出的一個声明:這個頁面在某天某时更新過。当這個声明稳定可信时,蜘蛛會更愿意按它来安排重新抓取的時間——新近更新的頁面排在前面,長期没動的頁面靠後。

這里有個前提:可信。蜘蛛並不盲目采信這個字段,它會拿實际抓取结果去核對。如果声明與内容不符,字段的參考價值會被逐步調低,直到被直接忽略。

几種把 lastmod 寫坏的方式

全站统一時間戳

每次生成 sitemap 时,把所有 URL 的 lastmod 都刷成目前時間。這在技術上最省事,但等于告诉蜘蛛“全站每一秒都在變”。当蜘蛛按這個時間去抓,却發現頁面内容和上次一模一样,這個字段就失去了參考意义。

只改格式不改逻辑

格式要符合 W3C 日期規范,比如寫成 2025-03-18,或者带上时区的完整寫法。格式错誤會让整個字段解析失敗,等于压根没寫。

内容改動與字段脱节

編輯改了正文,但 sitemap 是静態文件没重新生成;或者反過来,後台每次儲存草稿都刷新時間。两種偏差都會让 lastmod 與實际情况對不上。

信任被消耗之後,抓取路径會怎么變

這不是立刻生效的惩罚,更像是逐渐失去一條快捷通道。表現通常有几层:

  • 蜘蛛對 sitemap 的抓取频率下降,訪問間隔被拉長;
  • 調度重新回到依赖内鏈和外部連結,發現與重抓的节奏變慢;
  • 新發布的内容要等更久才被重新訪問,因為少了一個明确的“更新信号”。

換個角度说,站点运营少了一個低成本的沟通渠道。蜘蛛還是會繼續抓取站点,只是更依赖它自己摸索出来的路径。

寫好 lastmod 的几條實操建议

  1. 只在内容實质變化时更新。改标题、改正文、改主要结构化資料算變化;只調整一個模块的位置不算。
  2. 時間精确到天通常就够。多數站点不需要精确到秒,過度精确反而容易暴露是程序批量生成的。
  3. 子地图各自维護。把 sitemap 拆成多份时,每份文件的 lastmod 按各自内部的最大時間取,不要全站一把刷。
  4. URL 消失时從 sitemap 移除。返回 404 或已经合並的 URL 留在里面,會持續消耗這條通道的可信度。
  5. 時間不要寫到未来。服務器时区配置错誤常造成這種结果,蜘蛛核對时會直接判為異常。

changefreq 和 priority 基本不必再花心思

這两個字段在主流搜尋引擎的抓取調度中早已不參與計算,填了也不會被采纳。與其花時間给頁面定優先級,不如把 lastmod 的准确性做扎實。真正的優先級,蜘蛛是综合内鏈位置、外鏈、訪問情况等信号自己判断的。

怎么驗證字段有没有被采信

一個比較直接的观察方法是看服務器日誌里蜘蛛訪問 sitemap 的規律:如果它大致按你声明的更新节奏来訪,說明這條通道還在正常工作;如果每次都是固定間隔来一趟、不再參考 lastmod,說明這個字段的權重已经被降低了。同时也可以對照被重新抓取的 URL 分布,看新更新的内容是否比其他頁面更快被再次訪問。

把 lastmod 当成一份對蜘蛛的承诺:寫下的時間,站点就應当能對應到一次真實的内容變化。

它不复杂,也不需要額外工具,只是需要後端或 CMS 在更新时認真回寫一次時間戳。相比反复調整内鏈和外鏈,這件事的投入产出比往往被低估。