站点一大,收录核对就变成一件做不完的事。几十万条 URL 逐个查并不现实,于是很多人退回到两个偷懒的做法:看索引覆盖报告的总量曲线,或者抽查首页和几个热门详情页,然后推断全站情况。这两种做法漏掉的问题往往是一致的——出问题的常常不是首页和最热的那几页,而是模板批量生成的列表页、分页、聚合页和深层详情页。
更可行的方式是把全站 URL 先分层,再做抽样核对。抽样不是为了省事,它的目的是先回答一个问题:是哪一类页面在拖后腿。
为什么按分层抽样,而不是随机抽
收录率的高低,主要受页面模板和链接位置影响,而不是随机分布。随机抽 100 条地址,如果站内多数是详情页,抽出来的样本也会以详情页为主,列表页、分页这类占比不高但问题集中的类型几乎抽不到。分层抽样的作用,是保证每一类页面都有固定数量的样本。
第一层:按页面模板分
先对着站点的 URL 结构,把地址归到几个稳定的模板里,例如:
- 首页与一级频道页
- 栏目、列表页
- 内容详情页
- 标签、专题、聚合页
- 分页与筛选结果页
- 站内搜索、用户中心等工具型页面
- 多语言版本或分站入口
每一类至少抽 20 到 30 条地址。数量太少,一两条异常就能把整层的结论带偏。
第二层:按从入口到页面的距离分
同一个模板,放在首页直连的位置和放在第三、第四层链接后面,被抓取的节奏往往差很多。可以在每层模板里再按首页直达、两级以内、三级以上分一下,看看收录情况是不是随着距离变远而明显下降。如果下降很陡,问题多半在链接结构,而不是页面内容本身。
第三层:按更新频率分
长期不更新的页面和每天有新内容的页面,抓取节奏本来就不一样。把样本按每日更新、每周更新、基本不更新再标一遍,能避免把“更新慢所以抓得慢”误判成“页面有问题”。
抽样结果记成一张表
建议每个样本至少记录下面几项,字段固定,方便下次对比:
- 样本 URL 与所属模板
- 链接深度(从首页点几次能到)
- 它是否应该被收录(有些页面本来就不该进索引)
- 目前能否在索引里查到
- 最近一次被抓取的时间
- 备注:参数、canonical 指向、是否被 robots 规则挡住等
拿到表之后先看哪里
先看层与层之间的差距,再看层内部的差异。某一层的收录率整体偏低,通常说明这一层的模板或规则有问题,比如地址带参数、内容过于稀薄、主内容被模板挤占、canonical 指向了别的地址。如果某一层整体正常,只有个别地址不对,那更可能是单页问题,不必动整层策略。
还要注意区分抓取和收录:日志里有抓取记录,只说明蜘蛛来过,不代表页面进了索引;反过来,索引里还留着某个地址,也可能只是还没更新,不代表当前还能正常访问。
几个容易被忽略的误区
- 把索引覆盖报告的总量当成收录健康度,忽略结构变化
- 只看一次抽样结果,不看它随时间怎么变
- 把某一层的结论直接套到单个页面上
- 把“没被抓取”和“抓了没收录”混在一起讨论
抽样核对的价值不在于替代全量,而在于先把问题定位到某一类页面,再决定要不要为这一层做定向的全量比对。
最后,把这件事变成固定动作:大改版后跑一次,日常每月跑一次,结论记录下来。层与层之间的比例变化,往往比单次的绝对数字更有参考价值。