lastmod 在抓取調度里扮演什么角色
Sitemap 里的 lastmod 不是给用戶看的字段,它主要服務于蜘蛛的抓取調度。蜘蛛已经知道這個 URL 存在,但它不确定内容有没有變化。lastmod 相当于站点给出的一個声明:這個頁面在某天某时更新過。当這個声明稳定可信时,蜘蛛會更愿意按它来安排重新抓取的時間——新近更新的頁面排在前面,長期没動的頁面靠後。
這里有個前提:可信。蜘蛛並不盲目采信這個字段,它會拿實际抓取结果去核對。如果声明與内容不符,字段的參考價值會被逐步調低,直到被直接忽略。
几種把 lastmod 寫坏的方式
全站统一時間戳
每次生成 sitemap 时,把所有 URL 的 lastmod 都刷成目前時間。這在技術上最省事,但等于告诉蜘蛛“全站每一秒都在變”。当蜘蛛按這個時間去抓,却發現頁面内容和上次一模一样,這個字段就失去了參考意义。
只改格式不改逻辑
格式要符合 W3C 日期規范,比如寫成 2025-03-18,或者带上时区的完整寫法。格式错誤會让整個字段解析失敗,等于压根没寫。
内容改動與字段脱节
編輯改了正文,但 sitemap 是静態文件没重新生成;或者反過来,後台每次儲存草稿都刷新時間。两種偏差都會让 lastmod 與實际情况對不上。
信任被消耗之後,抓取路径會怎么變
這不是立刻生效的惩罚,更像是逐渐失去一條快捷通道。表現通常有几层:
- 蜘蛛對 sitemap 的抓取频率下降,訪問間隔被拉長;
- 調度重新回到依赖内鏈和外部連結,發現與重抓的节奏變慢;
- 新發布的内容要等更久才被重新訪問,因為少了一個明确的“更新信号”。
換個角度说,站点运营少了一個低成本的沟通渠道。蜘蛛還是會繼續抓取站点,只是更依赖它自己摸索出来的路径。
寫好 lastmod 的几條實操建议
- 只在内容實质變化时更新。改标题、改正文、改主要结构化資料算變化;只調整一個模块的位置不算。
- 時間精确到天通常就够。多數站点不需要精确到秒,過度精确反而容易暴露是程序批量生成的。
- 子地图各自维護。把 sitemap 拆成多份时,每份文件的 lastmod 按各自内部的最大時間取,不要全站一把刷。
- URL 消失时從 sitemap 移除。返回 404 或已经合並的 URL 留在里面,會持續消耗這條通道的可信度。
- 時間不要寫到未来。服務器时区配置错誤常造成這種结果,蜘蛛核對时會直接判為異常。
changefreq 和 priority 基本不必再花心思
這两個字段在主流搜尋引擎的抓取調度中早已不參與計算,填了也不會被采纳。與其花時間给頁面定優先級,不如把 lastmod 的准确性做扎實。真正的優先級,蜘蛛是综合内鏈位置、外鏈、訪問情况等信号自己判断的。
怎么驗證字段有没有被采信
一個比較直接的观察方法是看服務器日誌里蜘蛛訪問 sitemap 的規律:如果它大致按你声明的更新节奏来訪,說明這條通道還在正常工作;如果每次都是固定間隔来一趟、不再參考 lastmod,說明這個字段的權重已经被降低了。同时也可以對照被重新抓取的 URL 分布,看新更新的内容是否比其他頁面更快被再次訪問。
把 lastmod 当成一份對蜘蛛的承诺:寫下的時間,站点就應当能對應到一次真實的内容變化。
它不复杂,也不需要額外工具,只是需要後端或 CMS 在更新时認真回寫一次時間戳。相比反复調整内鏈和外鏈,這件事的投入产出比往往被低估。