搜尋抓取

Sitemap 里的 lastmod 與 changefreq:時間字段寫错會让蜘蛛白跑一趟

Sitemap 不只提供 URL 清單,其中的 lastmod、changefreq 等字段會影响蜘蛛判断哪些頁面值得優先回訪。本文說明這些時間信号的真實作用、常见寫法错誤,以及它們為何必须和内鏈、URL 可訪問性、服務器稳定性配合,並给出一份可直接执行的自检清單。

搜尋抓取

Sitemap 里的 lastmod 與 changefreq:時間字段寫错會让蜘蛛白跑一趟

Sitemap 里的時間字段,蜘蛛到底會不會看

Sitemap 除了给出一份 URL 清單,還带着几個時間和優先級字段。很多站点把它当成一張單纯的“URL 提交表”,字段随便填;但對搜尋引擎来说,這些字段是判断“這個頁面要不要現在重抓”的辅助信号。寫得不准,轻則浪費抓取量,重則让真正更新的頁面排在後面。

需要先说清楚:這些字段是建议,不是命令。搜尋引擎不一定按它抓取,也不承诺收錄。合理寫法的價值在于减少歧义、降低誤判,而不是換来排名。

lastmod:只标记内容真的變了的頁面

lastmod 表示頁面最後修改時間,通常用 ISO 8601 格式,例如 2025-03-14T09:20:00+08:00。它最大的用處,是让蜘蛛在一堆老頁面里快速识別哪些值得優先回訪。

常见的三種寫法問题

  • 全站時間一起刷新。程序每次生成 Sitemap 都把目前時間寫進所有條目。蜘蛛第一次可能当真,几次之後會發現“每個頁面都刚改過”與實际不符,這個信号就贬值了。
  • 格式與时区不统一。有的條目带时区,有的不带,還有用 2025/3/14 這類寫法,解析结果可能偏差一天,甚至被直接忽略。
  • 只換模板也算改。頁脚、广告位調整導致所有頁面 lastmod 更新,属于誤报。判断标准最好落在正文主体内容上,而不是整頁渲染结果。

更稳妥的做法是從内容库的更新時間字段取值,没有變化的頁面保留原值,让時間线本身有区分度。

changefreq 與 priority:当成备注,別当開關

這两個字段多年前還有一定參考作用,現在主流搜尋引擎基本忽略 changefreq,priority 也主要在自己站内做相對比較。寫了 daily 不會因此加速抓取,寫了 hourly 也不會提高權重。

所以不必在這上面反复纠结。如果保留,让取值與頁面實际更新节奏大致相符即可:新闻列表寫 daily,企业介绍頁寫 monthly 或者干脆不寫,都不會造成實质影响。真正影响蜘蛛判断的,還是 URL 是否可訪問、内容是否稳定、内鏈能否走到。

時間信号要和内鏈、抓取路径配合

Sitemap 只负责“告诉”,能不能被抓到還取决于別的條件:

  • URL 能返回正常狀態。如果清單里的地址發生跳轉、超时或返回 404,時間字段再准也没有意义。
  • 内鏈能走到。Sitemap 中的頁面如果没有任何站内連結指向它,長期看抓取频率往往偏低。给新頁面加一條正文内鏈或列表入口,通常比反复調整 lastmod 更直接。
  • 服務器稳定。抓取期間频繁超时,蜘蛛會主動放慢节奏,Sitemap 更新再快也會被压住。

換句话说,時間字段是排队时的一個參考,鏈路本身通畅才是前提。

一份可执行的自检清單

  1. 抽查 20 條 Sitemap 记錄,逐條打開,確認 URL 狀態正常、没有多余的重定向鏈。
  2. 對比 lastmod 與頁面實际更新時間,看是否存在“全站同一分钟”的情况。
  3. 確認時間格式统一、带时区,避免多種寫法混用。
  4. 核對 Sitemap 里的 URL 與站内連結可達的 URL 是否一致,注意大小寫、末尾斜杠與參數差异。
  5. 分片更新後,检查索引文件是否同步指向最新分片,舊分片是否已清理。
  6. 结合服務器訪問日誌,观察清單中的新 URL 大概多久後出現抓取记錄,據此調整更新频率與提交节奏。
把 Sitemap 当成一份诚實的清單:URL 是真實的,時間是真實的,剩下的交给内鏈结构和蜘蛛自己去判断。