搜尋抓取

Sitemap 到底被怎么讀:索引文件、分片與 lastmod 的取舍细节

Sitemap 不是交给搜尋引擎就一定會被逐條讀取的清單。本文從索引文件、分片數量、lastmod 可信度、字段規范几個角度,說明蜘蛛實际讀取 Sitemap 的顺序與取舍,以及它和内鏈、入口頁之間的分工,帮助你把這個入口用得更有價值。

搜尋抓取

Sitemap 到底被怎么讀:索引文件、分片與 lastmod 的取舍细节

Sitemap 常被理解成一份“交给搜尋引擎就能全收錄”的清單。實际使用中它更像一個發現通道:蜘蛛會讀,但不一定逐條按顺序處理,處理节奏也和站点規模、更新频率、其他入口信号有關。理解它被讀取的方式,比反复提交要有效得多。

Sitemap 是入口,不是保證

Sitemap 的作用是把 URL 送進“已知”集合。進入已知之後,還要经過抓取、解析、评估,才可能進入索引。所以看到 Sitemap 里的地址長期没被抓取,先別急着重新提交,先確認這些 URL 是否有内鏈支撑、是否值得占用抓取资源。

索引文件與分片:一次能讀多少

規模稍大的站点通常用 sitemap 索引文件(sitemap index)指向多個子 Sitemap。蜘蛛會先讀索引,再按需讀取子文件。這里有几個容易忽略的点:

  • 單個文件里的 URL 數量有上限,超出部分不會被讀,必须拆分成多個子文件。
  • 索引文件本身也要保持简洁,只列子 Sitemap 地址和最後更新時間,不要混入普通頁面連結。
  • 子文件按内容類型或栏目拆分,比按時間随便切更容易被分批讀取。
  • 所有子文件都要能獨立返回正常狀態碼,任何一個 404 或 5xx 都會让這一片暂时失效。

換句话说,蜘蛛不是一次性讀完整個索引,而是有選擇地抓取子文件。分片方式决定了它先看到哪一批 URL。

lastmod 的可信度

lastmod 是少數能影响复查节奏的字段,但前提是它真實且稳定。如果每次生成 Sitemap 都把全站時間刷成目前时刻,這個字段很快就會被忽略,等于自己放弃了它。更實用的做法是:只有正文、價格、库存這類實质變化才更新 lastmod,模板調整、導航改動不必改動它。

建议的字段寫法

  • loc 用绝對地址,與頁面最终 URL 完全一致,避免跳轉。
  • lastmod 用 W3C 格式的時間,带时区更稳妥。
  • changefreq 和 priority 現在更多是參考值,寫不寫影响都不大,不必為此纠结。
  • 不要放 noindex、重定向或需要登入的地址,它們會稀释這份清單的價值。

常见配置問题

  • Sitemap 声明在 robots.txt 里,但地址本身返回 301,蜘蛛要多跳一次才拿到内容。
  • Sitemap 里的 URL 和站内實际連結不一致,比如带不带尾斜杠、大小寫不同,等于把同一頁面报了两遍。
  • 分片文件長期不更新,新增内容一直没進索引文件,蜘蛛自然看不到。
  • 把 Sitemap 当主要發現手段,内鏈却几乎為零,结果 URL 被知道但拿不到足够的權重信号。

它和内鏈、入口頁的分工

Sitemap 擅長覆盖广度,尤其是新頁面、深层頁面和站内連結較少的地址;内鏈擅長传递层級和重要性,让蜘蛛判断哪些頁面更值得優先抓;入口頁和栏目頁則决定蜘蛛進入站点的第一跳。三者重叠越多,效果越好,但谁也不能完全替代谁。只靠 Sitemap 而不修内鏈,通常表現為“被發現得快、被复查得慢”。

一個简單的自查顺序

  1. 先確認 Sitemap 能被正常訪問,索引文件與子文件都没有错誤狀態碼。
  2. 抽查若干 URL,看它們在站内是否至少有两條可抓内鏈指向。
  3. 检查 lastmod 是否被無差別刷新。
  4. 對照抓取日誌,看 Sitemap 中的地址是否出現過,出現後是否有复查。
把 Sitemap 当成一份持續维護的清單,而不是一次性的提交動作。它解决的是“有没有被知道”,抓取和索引仍要靠内鏈、内容质量和服務器稳定性一起支撑。

当 Sitemap 的字段稳定、分片合理、連結與站内一致,它在 URL 發現环节的作用會明顯提升;但它始终只是抓取路径上的一环,不是终点。