站点运营時間一長,URL 總量只會往上走。新内容在增加,舊内容也没有消失。很多頁面早就不再更新,也不再有訪問,但蜘蛛還是會按时来。抓取资源不是無限的,這部分開销會挤占新地址被發現的机會。
归档頁會自己長大
常见的归档有两類:一類按時間切分,比如 /2021/03/ 這样的年月路径;一類按分類或标簽聚合。它們本身有用,既给用戶浏览入口,也给蜘蛛提供路径。麻烦在于,它們會随着内容增加不断产生新的 URL,而且往往是自動生成、没人管理的那一批。
一篇舊文章可能有四五條路径能到達:标簽頁、日期归档、相關阅讀、站内搜尋、Sitemap。路径多不等于發現快,反而让同一批内容被反复抓取。
舊 URL 為什么還在被訪問
- Sitemap 没有清理,早期提交的地址還留在里面;
- 頁脚、侧邊栏、相關阅讀等全站模板一直鏈着归档入口;
- 归档自己還有分頁,第 2 頁、第 3 頁形成長長的鏈;
- 外部連結仍在,蜘蛛會顺着外鏈回訪;
- 部分地址是參數或排序生成的重复版本。
這些因素叠加起来,一個内容量並不大的站,也可能有一大批 URL 長期占着抓取次數。
分三類處理
保留
仍有訪問、仍有外部連結、對用戶有浏览價值的归档,可以留下。但不必放在全站模板里,收進层級更深的入口即可,让蜘蛛按需走到。
合並
多個归档指向同一批内容时,合並成少量入口,用分頁或篩選来承接。合並後记得做 301,別让舊地址直接 404。
下线
内容已刪除或没有保留價值的,明确返回 404 或 410,不要用 200 返回一個空頁面。空頁面會繼續被当成正常地址抓取,也容易让蜘蛛對這批頁面的质量形成偏低判断。如果只是換了地址,用 301 指向新地址即可。
noindex 和 robots 的用法差別
归档頁不想進索引,可以用 noindex, follow,保留路径但不占索引名額。要留意的是,robots.txt 屏蔽和 noindex 是两回事:被 robots 挡住的頁面,蜘蛛看不到頁面里的 noindex 声明,也就無法據此調整。所以想让某類頁面登出索引,尽量不要用 robots 去挡。
把 URL 交给蜘蛛之前,先想清楚它值不值得占用一次抓取。
用日誌驗證效果
- 按目錄統計抓取次數,看舊目錄的占比是否下降;
- 看 404、410 的比例變化,判断清理是否生效;
- 记錄新内容從發布到首次被抓的時間,观察是否缩短。
調整通常不會立刻反映出来,观察四到八周更稳妥。中間出現波動是正常的。
一份可执行清單
- 導出最近一個月的服務器日誌,按目錄和 URL 類型聚合;
- 列出長尾類型:日期归档、标簽頁、參數頁、附件頁、已刪除内容;
- 逐類决定保留、合並還是下线;
- 清理 Sitemap,只保留需要被發現的地址,lastmod 如實填寫;
- 减少全站模板中的舊連結,把入口放到更合适的位置;
- 观察四到八周,對比新 URL 的發現速度與抓取分布。
归档不是不能有,而是要有邊界。知道哪些地址值得被抓,比一味增加入口更有用。