lastmod 是提示,不是指令
XML 站点地图里的 lastmod 用来描述某個 URL 最後一次實质更新的時間。它不參與排名計算,但會影响蜘蛛的調度判断:当蜘蛛需要在有限的抓取配額里挑一批 URL 回訪时,lastmod 較新、且與上次抓取時間拉開差距的條目,通常更容易進入队列。理解這一点很關键——它是「预约提醒」,不是「强制召回」。正因如此,lastmod 寫得准不准,直接關系到抓取次數花在谁身上。
常见的四類偏差
- 批量刷新:生成程序每次跑任務都把目前時間寫進所有條目,等于向蜘蛛声明「整站刚刚全部改過」。回訪几次發現内容没動,這條信号的使用價值就會被打折。
- 只改内容不改時間:正文更新了,lastmod 還停在首次發布時間,回訪被顺延到更晚。
- 格式與时区不统一:有的寫完整時間戳並带 +08:00,有的用 Z,有的只寫日期。解析口径不一致时,新時間可能被讀成舊時間。
- 歷史時間回填:站点迁移或批量導入时把原始發布時間带進 sitemap,蜘蛛會把刚上线的新路径当成老頁面。
三步核對法
- 抽样對照。挑 20 到 50 個近期确實更新過的 URL,把 sitemap 中的 lastmod 與内容管理系統里的更新時間字段逐條比對,先看清偏差有多大、是普遍還是個例。
- 看文件 diff。儲存连續几天的 sitemap,統計 lastmod 發生變化的條目占比。如果每次都接近 100%,基本可以判定為批量刷新,而不是真實更新。
- 用日誌對齐。在服務器日誌里筛出蜘蛛對同一 URL 的两次訪問間隔,與 lastmod 的變化時間点放在一條時間线上。回訪是否跟着時間戳走,比任何猜测都直观。
格式层面要统一
建议全站统一為带时区的完整時間戳格式,避免同一天里出現「只寫日期」和「寫到时秒」两種寫法混用。日期粒度越粗,蜘蛛越难判断一天之内的多次改動,回訪判断也就越保守。
它和抓取分配的關系
当站点條目數遠大于日常抓取量时,lastmod 失真的代價會被放大:一批「假新」頁面挤在前面,真正更新的頁面排在後面。這不是收錄與否的問题,而是抓取次數怎么分的問题。對内容更新频繁的栏目,這個差別尤其明顯。
修复顺序建议
- 先改生成逻辑:只有内容字段真正變化时才寫入新的 lastmod,模板調整、導航更新不触發。
- 再處理歷史資料:對已上线的舊條目做一次校正,不要用回填的發布時間覆盖真實更新時間。
- 最後驗證:修复後繼續跟踪 sitemap diff 與日誌回訪間隔,观察几周,確認信号與内容节奏對得上。
lastmod 只是站点给出的一個參考信号,蜘蛛是否回訪、何时回訪,仍由它自身的調度决定。把它寫准的意义在于减少誤判,而不是換取确定的時間承诺。
如果站点同时存在多種 URL 變体或多個語言版本,建议先確認各版本归属的 sitemap 是否分開维護,否則同一頁面的 lastmod 會在不同文件里互相打架,核對起来更費劲。