很多站点运营者盯的是“蜘蛛今天有没有来”,却很少盯“蜘蛛一般什么时候来”。實际上,同一個站点的抓取量在一天之内可能相差几倍,凌晨、上午、下午的分布並不一样。把抓取当成一件有時間分布的事情来看,很多让人头疼的問题會變得好解释:為什么刚發布就被抓走了舊版本,為什么改動第二天才生效,為什么维護那两小时刚好被撞上。
一、抓取时段的分布並不均匀
從訪問日誌里按小时統計蜘蛛的請求數,通常能看到一條有明顯起伏的曲线。常见的形態是:凌晨到清晨出現一個相對集中的批次,白天保持低频巡查,晚間再有一波。這個形態不是固定的,它會跟着站点自身的變化而移動。
- 更新频率高的站点,抓取分布更平,全天都有請求,峰值不那么突出。
- 更新频率低的站点,抓取更像“定期巡查”,集中在少數几個時間点。
- 栏目之間也不一样,首頁和列表頁可能一天多次,深层詳情頁可能几天才轮一次。
還要注意日誌时区。服務器日誌按 UTC 记錄、你自己按本地時間看,很容易把“凌晨三点的高峰”错看成“上午十一点”。先把时区對齐,再谈規律。
二、發布节奏和抓取窗口的错位
不少团队习惯每天固定時間批量發布,然後立刻检查标题、調整摘要、替換配图。問题在于,如果這些頁面在發布瞬間就已经可被抓取,蜘蛛完全可能在你還改着的时候就把第一個版本取走了。等你改完,它已经拿着舊内容走了,下次再来是几小时還是几天,不好说。
比較稳妥的做法是把“可被抓取”和“人工編輯完成”两個时点尽量分開:
- 内容定稿、标题和摘要確認之後再让它進入可抓取的連結路径,草稿和预览頁不要出現在任何站内連結里。
- 批量發布时不必一次性放出全部,分散到不同時間段,避免自己制造一個瞬时高峰。
- 發布後短時間内的大改,尽量在可抓取之前完成;發布後只做小幅修正。
三、改動的生效時間和抓取时段有關
已收錄頁面的修改,能不能被很快看到,取决于蜘蛛下次来訪的時間点。如果這個頁面的抓取频率本来就不高,改動以後可能要等上不短的時間。想让重要改動更快被注意到,可以配合站内連結更新或者 Sitemap 里的時間标记,但不要為了让改動顯得更新而反复改時間标记,那只會让這些信号變得不可信。
反過来,長期不動的頁面,抓取频率會自然下降。這不是惩罚,只是资源配置的结果。真正需要保持新鲜度的栏目,應该靠實际内容更新来维持,而不是靠形式上的改動。
四、维護窗口尽量避開抓取高峰
服務器维護、資料库迁移、批量重定向這類操作,如果恰好落在抓取集中的时段,代價會明顯放大:本来只是几分钟的不可用,可能被放大成一整轮抓取失敗。可以先按小时看一段時間的抓取分布,把维護排在請求最少的时段,並且尽量缩短影响時間。
抓取时段本身不完全由你决定,但發布的時間点、改動的時間点、维護的時間点,都是可以選的。把這三件事從抓取高峰上挪開,比事後补救要省力得多。