Sitemap 里的 lastmod 是最容易被誤用的字段之一。它既不影响頁面排名,也不能直接命令蜘蛛来抓,但在抓取調度里确實有參考價值。很多站長把它当成一種“提醒按钮”,每天刷新成当天日期,希望蜘蛛因此多来几次。短期看可能有点動静,時間一長,這個信号就會變得不可信。
更新信号在抓取調度里做什么
蜘蛛的待抓队列里,URL 數量极大。决定先後顺序的因素包括:頁面重要性(内鏈、入口位置)、歷史抓取表現、服務器响應情况,以及“這個頁面可能變了”的线索。lastmod 属于最後一類。
如果站点有大量 URL 長期不變,而你又把 lastmod 全部寫成当天,調度器面對的就是一份没有区分度的清單。它無法判断哪些頁真的更新了,只能按其他因素排。更新信号失效,最直接的结果是真正改動的内容没有優先被抓,而不是“蜘蛛来得更多”。
蜘蛛判断更新還有哪些线索
Last-Modified 與 ETag
服務器响應头里的 Last-Modified 和 ETag,是蜘蛛判断内容是否變化的另一條通道。当它带着 If-Modified-Since 或 If-None-Match 再次訪問时,若内容未變,服務器返回 304,蜘蛛就知道没必要重新解析。這條通道依赖服務器配置,往往比 Sitemap 字段更接近真實狀態。
内鏈與列表頁的變化
首頁、栏目頁、文章列表頁的連結顺序和更新時間,也是线索。一個新連結出現在列表頁顶部,比一條孤立的 Sitemap 時間戳更有说服力。反過来,如果列表頁長時間没有新增連結,即使 Sitemap 里的 lastmod 天天更新,蜘蛛也會倾向于降低訪問频率。
内容本身的差异
蜘蛛會把抓到的正文與上次存档做比對。只有模板部分變動(比如加了個广告位、換了頁脚),正文几乎一致时,這次更新對站点来说意义有限。频繁触發這種“空更新”,會让調度器對時間戳的信任打折。
更稳妥的维護方式
- 只在頁面主体内容發生實质變化时更新 lastmod,比如新增章节、修订資料、补充案例。
- 站内批量改動(改導航、改样式)不要全站刷新時間戳,除非這些改動确實改變了頁面的可讀内容。
- Sitemap 分片之間保持一致的規則,不要一部分用内容更新日期,另一部分用文件生成日期。
- 時間格式统一使用 W3C Datetime,並带上时区,避免解析歧义。
- 如果站点有自動發布流程,可以让程序在儲存内容时寫入真實時間,而不是每次執行生成任務都覆盖。
几個常见誤区
- 以為 lastmod 越新,抓取频率越高。調度器看的是變化是否可信,不是日期本身。
- 把 priority 和 changefreq 当作控制手段。這两個字段目前對主流搜尋引擎基本没有實际作用。
- 頁面内容没變,却為了让 Sitemap 看起来“活”而随便改几行無關文字,這會让更新判定更混乱。
更新信号的價值在于分辨真假變化。站点的更新节奏越接近真實,蜘蛛越容易把抓取安排在對的時間点。
可以定期检查的几件事
第一,随机抽十几個 URL,對比 Sitemap 里的 lastmod 與頁面上顯示的更新時間,看是否一致。第二,检查服務器是否返回 Last-Modified,以及内容未變时能否返回 304。第三,观察日誌里同一 URL 的抓取間隔,是否與内容更新频率大致匹配。第四,新發布的頁面是否在較短時間内被訪問;如果没有,先看内鏈入口和列表頁是否把它連結出来,而不是急着全站改時間戳。
抓取調度是一個综合判断的過程,lastmod 只是其中一條线索。把它记錄准确,比把它寫得更新,對站点更有用。