搜尋抓取

lastmod 不是越新越好:更新信号怎么參與蜘蛛的抓取調度

很多站点為了让蜘蛛多来,把 Sitemap 里的 lastmod 改成当天,结果反而让更新信号失去參考價值。本文說明更新時間戳在抓取調度里的作用,蜘蛛還會參考哪些變更线索,以及怎样维護 lastmod、Last-Modified 和列表頁變化,让抓取节奏更贴近站点的真實更新频率。

搜尋抓取

lastmod 不是越新越好:更新信号怎么參與蜘蛛的抓取調度

Sitemap 里的 lastmod 是最容易被誤用的字段之一。它既不影响頁面排名,也不能直接命令蜘蛛来抓,但在抓取調度里确實有參考價值。很多站長把它当成一種“提醒按钮”,每天刷新成当天日期,希望蜘蛛因此多来几次。短期看可能有点動静,時間一長,這個信号就會變得不可信。

更新信号在抓取調度里做什么

蜘蛛的待抓队列里,URL 數量极大。决定先後顺序的因素包括:頁面重要性(内鏈、入口位置)、歷史抓取表現、服務器响應情况,以及“這個頁面可能變了”的线索。lastmod 属于最後一類。

如果站点有大量 URL 長期不變,而你又把 lastmod 全部寫成当天,調度器面對的就是一份没有区分度的清單。它無法判断哪些頁真的更新了,只能按其他因素排。更新信号失效,最直接的结果是真正改動的内容没有優先被抓,而不是“蜘蛛来得更多”。

蜘蛛判断更新還有哪些线索

Last-Modified 與 ETag

服務器响應头里的 Last-Modified 和 ETag,是蜘蛛判断内容是否變化的另一條通道。当它带着 If-Modified-Since 或 If-None-Match 再次訪問时,若内容未變,服務器返回 304,蜘蛛就知道没必要重新解析。這條通道依赖服務器配置,往往比 Sitemap 字段更接近真實狀態。

内鏈與列表頁的變化

首頁、栏目頁、文章列表頁的連結顺序和更新時間,也是线索。一個新連結出現在列表頁顶部,比一條孤立的 Sitemap 時間戳更有说服力。反過来,如果列表頁長時間没有新增連結,即使 Sitemap 里的 lastmod 天天更新,蜘蛛也會倾向于降低訪問频率。

内容本身的差异

蜘蛛會把抓到的正文與上次存档做比對。只有模板部分變動(比如加了個广告位、換了頁脚),正文几乎一致时,這次更新對站点来说意义有限。频繁触發這種“空更新”,會让調度器對時間戳的信任打折。

更稳妥的维護方式

  1. 只在頁面主体内容發生實质變化时更新 lastmod,比如新增章节、修订資料、补充案例。
  2. 站内批量改動(改導航、改样式)不要全站刷新時間戳,除非這些改動确實改變了頁面的可讀内容。
  3. Sitemap 分片之間保持一致的規則,不要一部分用内容更新日期,另一部分用文件生成日期。
  4. 時間格式统一使用 W3C Datetime,並带上时区,避免解析歧义。
  5. 如果站点有自動發布流程,可以让程序在儲存内容时寫入真實時間,而不是每次執行生成任務都覆盖。

几個常见誤区

  • 以為 lastmod 越新,抓取频率越高。調度器看的是變化是否可信,不是日期本身。
  • 把 priority 和 changefreq 当作控制手段。這两個字段目前對主流搜尋引擎基本没有實际作用。
  • 頁面内容没變,却為了让 Sitemap 看起来“活”而随便改几行無關文字,這會让更新判定更混乱。
更新信号的價值在于分辨真假變化。站点的更新节奏越接近真實,蜘蛛越容易把抓取安排在對的時間点。

可以定期检查的几件事

第一,随机抽十几個 URL,對比 Sitemap 里的 lastmod 與頁面上顯示的更新時間,看是否一致。第二,检查服務器是否返回 Last-Modified,以及内容未變时能否返回 304。第三,观察日誌里同一 URL 的抓取間隔,是否與内容更新频率大致匹配。第四,新發布的頁面是否在較短時間内被訪問;如果没有,先看内鏈入口和列表頁是否把它連結出来,而不是急着全站改時間戳。

抓取調度是一個综合判断的過程,lastmod 只是其中一條线索。把它记錄准确,比把它寫得更新,對站点更有用。