Sitemap 里的 lastmod 字段,很多人把它当成一根能催蜘蛛上门的绳子:只要把時間改成今天,蜘蛛就會来看。實际使用时它更像一條备注,蜘蛛會參考,但不會因為你寫了新時間就立刻排期抓取。寫對了,它是一條有用的线索;寫错了,它只是噪音,而且寫错次數多了,這條线索本身也會被忽略。
lastmod 在抓取調度里扮演什么角色
對搜尋引擎来说,lastmod 描述的是“這個 URL 對應的内容,最近一次發生實质變化的時間”。它的作用大致有三层:
- 判断是否需要重新抓取:如果一個 URL 的 lastmod 比上次抓取時間還早,說明内容没動,重新抓取的紧迫性就低。
- 參與優先級排序:同一批 URL 里,時間更新的更容易被排在前面。
- 影响重抓間隔的判断:長期 lastmod 不變、内容也不變的頁面,重抓频率會自然下降。
注意這三件事都是“參考”,不是“指令”。真正的抓取排期還會受服務器响應、抓取预算、頁面重要程度等因素影响。所以寫 lastmod 的目标不是让它立刻生效,而是让它別失效。
三種常见寫法,各自的副作用
每次生成都寫目前時間
把 lastmod 设成构建時間或訪問時間,是最常见的做法。结果是内容一個字没改,Sitemap 每天都是新的。短期看似能带来抓取,長期會让這條時間线索失去区分度,蜘蛛没法從一堆“今天”里挑出真正更新的頁面。
全站统一一個時間戳
所有 URL 共用同一個時間,等于告诉搜尋引擎全站同时更新。同样的問题:所有頁面看起来一样新,就不會有任何頁面顯得更值得優先看。分片 Sitemap 中,索引文件的 lastmod 應该是子文件的變化時間,而子文件里各個 URL 的 lastmod 才是頁面自己的時間,两者不要混着寫。
只改 lastmod,不改内容
這是最伤信任的一種。如果多次出現“lastmod 更新但抓到的頁面與上次完全一致”,這條线索在調度里的權重會下降。它不是一次性的惩罚,而是逐步被忽略:你以為自己在提醒,實际上只是把噪音調大了。
怎样寫才算一條可用的時間线索
- 與真實變更對齐:模板改動、推荐位調整這類不影响正文的改動,不必改 lastmod。
- 精度到天通常就够:秒級時間戳不會带来額外好處,反而更容易出現無意义抖動。
- 时区统一:用带时区的 ISO 8601 格式,避免同一站点出現两種時間基准。
- 不要倒退:lastmod 不應该比上一次更早,除非确實做了内容回退。
- 數量可控:真正的更新頁往往只占全站一小部分,如果每天有几千個 URL 同时變新,那基本可以确定時間戳是自動生成的。
從日誌里驗證它有没有被用上
驗證方式很朴素:找出那些 lastmod 有明顯變化的 URL,看它們在變化之後多久被重新抓取;再找一批 lastmod 没動、但内容實际更新過的頁面,看抓取間隔有没有被拉長。两相對比,大致能判断這條時間线索在你這個站点上是否被采纳。如果更新後抓取時間没有提前,也不必急着加大力度改時間戳,先看看是不是服務器响應或頁面重要程度在拖後腿。
该改與不该改
- 正文新增段落、修改标题、替換失效图片:改。
- 只有頁脚版權年份、CSS 類名、广告位顺序變化:不改。
- 列表頁新增了若干條内容:可以改,但不要每有一條新内容就整体刷新時間。
- 内容是轉载或聚合,源头並未變化:不改。
- 同一 URL 内容被刪除、改為空白頁:不要用 lastmod 表達,應该用狀態碼說明。
lastmod 的價值不在于“新”,而在于“准”。一條准确的時間线,比每天刷新的時間戳有用得多。
把 Sitemap 当成一份向蜘蛛說明站点状况的清單,lastmod 就是清單上的批注。批注寫得越接近事實,蜘蛛在排队时越容易做出正确判断;批注寫得随意,清單本身也會慢慢被当成噪音。