搜尋抓取

Sitemap 分片與索引文件:站点變大後,URL 清單该怎么交给蜘蛛

站点規模上来之後,單個 Sitemap 文件往往装不下全部 URL。本文讲清分片與索引文件的组织方式、每片的取舍标准、lastmod 的實际作用,以及分片更新和监控中容易踩的坑,帮助蜘蛛更顺畅地拿到需要抓取的地址清單。

搜尋抓取

Sitemap 分片與索引文件:站点變大後,URL 清單该怎么交给蜘蛛

Sitemap 的定位:清單,不是通道

很多运营把 Sitemap 当成“提交了就收錄”的按钮,實际不是。它更像一份交给蜘蛛的地址清單,作用是补充内鏈可能漏掉的 URL,而不是替代抓取路径。站点的主發現路径仍然是内鏈:蜘蛛沿着連結一层层走,判断哪些頁面值得繼續走。Sitemap 的價值在于把那些点击深度過深、内鏈稀少甚至暂时没有入口的頁面,直接摆到蜘蛛面前。

理解這一点之後,分片和索引文件的设計思路就清楚了:它要解决的是“清單太大、一次给不完”的工程問题,而不是“怎么让排名變好”。

一個文件装不下时,用索引文件拆開

單個 Sitemap 文件有明确的容量上限:一般不超過 50000 條 URL,未压缩体积不超過 50MB。超過之後,多出来的部分不會被讀取或容易被截断,等于白寫。這时候需要用索引文件(sitemap index)把多個分片串起来。

索引文件的结构很简單:外层是 sitemapindex,里面每一條 sitemap 记錄给出一個分片文件的绝對地址,可選带上该分片自己的 lastmod。蜘蛛讀到索引文件,再逐個去取分片,整個流程和普通抓取一样占用抓取预算,所以分片不是越多越好。

分片怎么切更省事

  • 按栏目或目錄切:和站内结构對齐,某個栏目增删时只動對應分片,维護成本最低。
  • 按内容類型切:文章、商品、活動頁各一個分片,便于分別判断哪些類型值得提交。
  • 按時間切:更新频繁的站点可以按周或按月切片,最新的單獨一個文件,方便蜘蛛優先取。

不建议按字母表或随机數量机械切分。分片文件的地址應当稳定,频繁改名會让蜘蛛反复废弃舊地址、重新發現新地址,白白消耗抓取次數。

分片里放什么,不放什么

清單的质量比數量重要。往分片里塞進一堆無效地址,只會稀释這個清單的可信度。

  • 放:返回 200、允许索引、且是規范版本(canonical 指向自身)的頁面地址。
  • 不放:301/302 跳轉地址、404 與软 404 地址、被 robots.txt 屏蔽或带 noindex 的頁面。
  • 慎放:带大量參數的篩選頁、分頁翻到很深的頁碼、站内搜尋结果頁。這類頁面通常是重复内容或低價值頁面,放進去反而占用抓取预算。

分頁的處理上有個折中做法:只放第一頁,後續頁碼靠内鏈的“下一頁”自然串联。這样清單更干净,蜘蛛也能顺着連結走。

lastmod、changefreq、priority 的現實

這三個字段里,只有 lastmod 還有實际參考價值,前提是它真實。如果每次生成 Sitemap 都把 lastmod 刷成目前時間,蜘蛛很快會学會忽略它;如果 lastmod 准确反映内容實际修改時間,回訪时就有机會跳過没變的頁面。

changefreq 和 priority 早已被主流搜尋引擎確認不作為排序或抓取依據,寫或不寫影响不大。與其在 priority 上纠结,不如把资源放在修正 lastmod 上。

让蜘蛛真正讀到這份清單

  1. 在 robots.txt 里用 Sitemap 指令声明索引文件的绝對地址,這是最省事的發現方式。
  2. 在站点後台的站長工具里提交索引文件,便于後續查看抓取與處理情况。
  3. 索引文件本身要能被正常訪問,別放在需要登入或返回 403 的目錄下。
  4. 分片文件如果做了 gzip 压缩,確認压缩包完整、编碼無 BOM 头,否則解析會失敗。

更新與监控的几個细节

分片更新的频率不必和内容發布频率一致。内容站可以每天或每周重建受影响的分片,低频更新的站点按需重建即可。索引文件的 lastmod 可以跟着分片變更同步。

监控时重点看两件事:一是各分片是否都處于可正常訪問狀態,二是站長工具里“已提交”和“已编入索引”的數量差距。這個差距本身是正常的,它反映的是篩選结果,不是失敗率,不要拿它当收錄率来考核。

一份干净、真實、分批维護的 URL 清單,比一份塞满全站地址的巨型文件更有用。

小结

Sitemap 解决的是“让蜘蛛知道有這些地址”,不解决“蜘蛛愿不愿意抓、要不要收錄”。分片與索引文件把清單規模問题拆開處理,真正的抓取路径依然要靠内鏈结构搭好。清單给得干净,路径铺得通畅,两者配合才有意义。