網站收錄

站点地图寫多少條合适:URL 數量、分片與更新频率的取舍

sitemap 不是塞得越多越好。本文讨论單文件 URL 條數上限、分片拆分原則、lastmod 的填寫尺度,以及如何通過日誌和索引报告判断 sitemap 到底有没有被有效使用,帮助站点把發現入口控制在可维護的范围内。

網站收錄

站点地图寫多少條合适:URL 數量、分片與更新频率的取舍

sitemap 的作用是“告知”,不是“保證收錄”

很多站点把 sitemap 当成收錄開關:只要 URL 寫進去,就等着它出現在索引里。實际情况是,sitemap 只是一種發現入口,它告诉蜘蛛“這個地址存在”,但要不要抓、抓了要不要進索引,仍然取决于頁面质量、重复情况和站内结构。把 sitemap 寫得又大又满,並不會让收錄量自動上涨,反而可能稀释蜘蛛對重要頁面的注意力。

單文件寫多少條 URL 比較合适

主流搜尋引擎對單個 sitemap 文件的 URL 條數和文件体积都有上限约定,通常是不超過 5 萬條、未压缩体积不超過 50MB。這是硬性邊界,不是推荐值。實际运营中更常见的做法是遠遠低于這個數:

  • 几百到几千條的小站点,一個文件寫完全部 URL 即可,维護成本最低。
  • 上萬條的中型站点,按栏目或内容類型拆分,一個文件對應一個可獨立维護的集合。
  • 内容量持續增長的站点,按時間或分部拆分,避免每次更新都重寫整個文件。

數量本身不是問题,把不同優先級、不同更新节奏的 URL 混在一起才是問题。当新闻頁和帮助文档同處一個文件,蜘蛛很难從 sitemap 层面判断哪些值得優先抓。

分片拆分的原則:按业務逻辑,不按凑數

分片(sitemap index 指向多個子 sitemap)的意义在于让每個文件有清晰的语义。可以考虑這几種切分方式:

  1. 按内容類型:商品、文章、分類、标簽各一個文件,便于單獨观察各類頁面的收錄表現。
  2. 按更新频率:高频更新的列表頁放一起,几乎不變的静態頁放一起。
  3. 按站点分部:多語言或多地区站点,按語言目錄或子域拆分,方便排查某一分部的抓取異常。

不推荐單纯為了“每個文件不超過 N 條”而机械切割,那样拆出来的文件没有业務含义,出問题时無法定位。

lastmod 该寫多准

lastmod 是 sitemap 里最容易被滥用的字段。常见两種极端:

  • 全部頁面都寫当天日期,或者每次生成时统一刷新一遍。
  • 完全不寫,让蜘蛛自己判断。

前者會让這個字段失去參考價值——当所有 URL 都顯示“刚刚更新過”,蜘蛛會逐渐忽略它。後者虽然不算错,但放弃了向蜘蛛传递更新信号的机會。比較稳妥的做法是只在頁面正文确有實质變化时更新 lastmod,例如模板微調、广告位轮換、頁脚年份變化這類改動不應触發更新。如果做不到精确到每個頁面,宁可只给真正會變的栏目加這個字段。

一個可用的判断标准:這個改動,用戶重新訪問时會察觉到吗?察觉不到,就不必改 lastmod。

怎么判断 sitemap 有没有被用上

提交之後不要只看“已提交”狀態,可以從几個方向驗證:

  • 服務器日誌:观察蜘蛛是否按 sitemap 里的 URL 發起抓取,抓取的時間分布是否集中在你预期的栏目上。
  • 索引报告:看“已發現但未编入索引”的 URL 是否大多来自 sitemap。如果比例很高,說明發現問题解决了,但质量問题没解决。
  • 抓取频次與响應碼:如果 sitemap 里的 URL 大量返回 3xx、404 或 5xx,先把這些地址清理掉,否則蜘蛛會降低對该文件的信任。

几個容易忽略的细节

  • sitemap 里只放返回 200 且允许被抓取的規范 URL,被 robots.txt 屏蔽或带 noindex 的地址不必放進去。
  • 寫進去的應该是頁面的最终規范地址,而不是带跟踪參數、會话 ID 的變体。
  • 更新 sitemap 後不必频繁 ping 提交入口,稳定更新比高频触發更有意义。
  • 索引文件本身的 URL 保持固定,不要每次改名,否則蜘蛛需要重新發現入口。

把 sitemap 当成一份需要長期维護的清單,而不是一次性的提交動作,它才能真正帮上 URL 發現的忙。