Sitemap 是站点向搜尋引擎提交 URL 的常用方式,但它更像一份“參考清單”,而不是抓取指令。蜘蛛會讀,也會從中挑 URL 進入队列,但不會因為某個字段寫了什么就改變抓取規則。很多站点把精力花在 priority 和 changefreq 上,结果收效甚微,反而忽略了 lastmod 這種更實际的字段。
lastmod 是 Sitemap 里最值得認真對待的字段
lastmod 表示頁面内容的最後修改時間。對蜘蛛来说,它是一個判断“是否需要重新抓取”的辅助信号。如果這個時間准确,並且和頁面實际更新時間一致,蜘蛛在調度重抓时會更有依據。尤其是更新频繁的列表頁、文章頁,准确的 lastmod 能帮助蜘蛛把抓取预算花在真正變化過的 URL 上。
問题在于,很多站点的 lastmod 是自動生成的:只要頁面被构建一次,時間就變一次。蜘蛛對比几次抓取记錄後,發現這個時間一直在變但正文没變,就會降低對這個字段的信任。更糟的是,当所有 URL 的 lastmod 都是同一时刻,這個字段基本等于没有。
比較稳妥的做法是:只有正文、标题、结构化資料等實质内容變化时才更新 lastmod;模板調整、广告位變化、推荐位轮換不要触發更新。時間格式用 W3C Datetime,带上时区,避免蜘蛛解析歧义。
priority 和 changefreq 的現實情况
這两個字段曾经被寄予厚望,但現在主流搜尋引擎基本不把它們作為抓取調度的依據。priority 是一個相對值,不是绝對權重,蜘蛛不會因為寫 1.0 就優先抓取。changefreq 只是站点對更新频率的自我描述,蜘蛛更相信自己實际观察到的更新規律。
所以,與其花時間给每個頁面分配 priority,不如检查這些 URL 是否都能通過内鏈到達、是否返回 200、是否被 robots.txt 誤拦。把這些基础問题處理好,比調整字段數值更有意义。
把 Sitemap 当成“提交更多 URL 就能抓更多”的工具,往往會導致低價值 URL 堆积,反而分散抓取注意力。
维護 Sitemap 的几個實用原則
- 只放可索引的規范 URL:返回 200 狀態、没有 noindex、不是重定向鏈中的中間地址。參數頁、排序篩選頁、重复内容頁不要放進去。
- 與内鏈保持一致:Sitemap 里的 URL 最好都能從站内連結到達。如果某個 URL 只出現在 Sitemap 里,蜘蛛抓取後可能因為缺少内鏈支持而降低後續抓取频率。
- 分片與索引文件:大站按内容類型或目錄分片,每個文件不超過 5 萬個 URL 且未压缩不超過 50MB,用索引文件统一提交。
- 定期核對抓取日誌:看蜘蛛是否抓取了 Sitemap、抓取後是否訪問了其中的 URL。如果 Sitemap 被抓取但里面的 URL 很少被訪問,就要检查 URL 本身的质量或站点结构。
常见誤区
第一個誤区是認為提交 Sitemap 就會收錄。Sitemap 只解决“發現”問题,不解决“是否值得索引”的問题。頁面质量、内容重复度、站点整体信任度都會影响最终结果。
第二個誤区是把所有 URL 都塞進 Sitemap,包括分頁、篩選、會话 ID、追踪參數。這样做會让蜘蛛在大量低價值 URL 上消耗抓取配額,真正重要的頁面反而被挤到後面。
第三個誤区是伪造 lastmod。為了让蜘蛛多来,把 lastmod 改成目前時間,短期内可能增加抓取,但一旦蜘蛛發現内容没變,這個字段就會失效,甚至影响整站 Sitemap 的可信度。
把 Sitemap 放回辅助位置
Sitemap 是 URL 發現的一條通道,但不是唯一通道,也不是最重要的通道。清晰的導航、合理的分類、正文中的内鏈,仍然是蜘蛛發現和理解 URL 的主要方式。Sitemap 更适合用来补充那些内鏈不容易覆盖到的頁面,或者帮助蜘蛛更快發現新發布的内容。
如果站点结构本身混乱,内鏈断裂,只靠 Sitemap 提交大量 URL,抓取效果通常不會理想。反過来,结构清晰、内鏈完整、lastmod 准确的站点,即使 Sitemap 简單,蜘蛛也能按自己的节奏稳定抓取。