很多站点把 sitemap 当成一份报备清單,只要 URL 在里面就算尽到义務。實际上它承担两件事:让搜尋引擎更快發現新 URL,以及给已知 URL 提供一條重抓的參考线索。而 lastmod 是這條线索里最容易被寫坏的部分。
lastmod 影响的是什么
先说清邊界:lastmod 不决定收錄,也不能让頁面進索引。它只是抓取調度时的一個輸入項,用来判断這個 URL 值不值得再来看一眼。寫對了,頁面更新後有机會更快被重新抓取;寫错了,顶多是這個信号失效,不會直接把頁面踢出索引。
同样常被提到的 changefreq 和 priority,主流搜尋引擎早已公開表示基本不參考,不必花時間微調。
几種典型的信号失真
- 全站统一寫当天時間。程序每次生成 sitemap 就把所有 URL 的 lastmod 刷成目前時間。爬虫抓回来發現内容没變,几次之後這個字段就没什么信用了。
- 發布代碼就更新,内容没動也改。批量改模板、調样式都會让時間戳集体前移,看起来像全站改版。
- 内容真改了却不更新。反向的問题:改動没有反映到 lastmod,頁面長期排队等不到重抓。
- 格式不規范。缺少时区、用本地時間冒充 UTC、寫成 2024/05/01 這類非标准格式,解析失敗後字段等于没寫。
怎么寫才算不白填
- 只在该 URL 的正文或關键区块真正變化时更新,样式、導航、頁脚調整不算。
- 使用 W3C Datetime 格式並带上时区,例如 2024-05-01T10:20:30+08:00。
- 保持语义上的單調递增:不要為了催爬虫反复把時間往前調,短期可能有波動,長期只會削弱可信度。
- 不同頁面的更新時間要能和真實的編輯记錄對上,方便自己排查。
把 lastmod 当成日誌,而不是武器:它是内容變更的如實记錄,不是催促抓取的手段。
分片與提交的几個细节
sitemap 單個文件通常不超過 5 萬條 URL、50MB(未压缩),超了就拆片,並用索引文件把分片串起来。這里有两個容易忽略的点:
- 不要每次全量重寫所有分片,尽量只更新發生變化的那一片。
- sitemap 地址在 robots.txt 里声明,同时在搜尋资源平台手動提交,两條路径都保留問题不大。
怎么判断有没有用
回看服務器日誌里這些 URL 的抓取時間分布,對比更新前後的間隔。如果更新後仍長時間没有重抓,先检查是不是被抓取预算、内鏈深度、頁面质量這些更靠前的因素卡住了——lastmod 只是排在後面的優化項。
另外要避免一種誤讀:抓取频率上升不等于收錄變多。抓取是過程,收錄是另一套判断,两者之間隔着頁面质量评估。把日誌里的抓取曲线当成收錄曲线,很容易得出错誤结论。
小结
sitemap 的價值一半在“有哪些 URL”,一半在“最近變了什么”。把 lastmod 寫准,比在 changefreq 上反复试驗更有意义。