So WTF is Crawl Budget?
顧名思義Crawl Budget是搜索引擎為你的網站制定的一個抓取頻次的預算。任何一個搜索引擎對任何一個已發現的網站都會有一個動態且唯一的Crawl Budget。
上圖是筆者在2018年參加SMX East時,Bing對Crawl Budget的定義。正如Bing所言,Crawl Budget是爬蟲所認為的在不傷害你的網站性能的情況下能投入的最大抓取量。
Crawl Budget決定了該搜索引擎在單位時間裡對你的網站資源請求多少次,花多少時間爬取和渲染。
請注意這裡的網站是指一個host,換句話說,hubspot.one和www.hubspot.one是兩個hosts。分別享有不同的Crawl Budget。而且就像Bing所言,Crawl Budget不單單針對一個個域名,而且會針對一個IP或者IP段。
搜索引擎幹嘛要弄個Crawl Budget?
因為人家也是交水電煤房租網費的,沒空花時間花資源來爬個垃圾站。
這麼說可能深深地刺痛了你的自尊心,但是搜索引擎的爬取資源畢竟不是無限的。您可去多爬幾次重要的頁面看看有沒有更新也不會對垃圾網站的頁面花一點點時間。
那SEO為什麼要關注Crawl Budget呢?
搜索引擎爬取一個頁面通常有兩個原因觸發:
- 搜索引擎發現了新頁面。
- 搜索引擎對長期未重新爬取的頁面進行再確認,保持新鮮度。如:看看頁面還在不在,有沒有新增加的內容,有沒有改版等等。
這兩個原因提升了抓取需求(Crawl Demand) 。也就是搜索引擎覺得你的網站更需要去爬一下了。通常來說中小網站(<10,000頁面)是不需要過多關注Crawl Budget的。但這也不是絕對的。
- 首先是怕漏爬。由於出現技術問題導致中小網站出現大量重複網頁,讓真正需要被爬取和索引的頁面“翻不了牌子”。
- 其次是怕遲爬。當爬行配額不足時,往往搜索引擎會無法及時爬取新內容。這樣對時效性較強的內容來說是一種損失。
除了抓取需求還有一個概念叫作抓取率限制(Crawl Rate Limit) 。它決定了某一個網站的平行並發連接數和期間等待的時間,它又由兩個因素決定:
- 抓取的健康度:如果站點響應很快一段時間,則限制會增加,這意味著可以使用更多連接進行爬網。如果網站速度變慢或響應服務器錯誤,則限制會下降並且爬蟲會抓取更少的內容。
- 你在搜索控制台中設置限制:網站所有者可以減少爬蟲對其網站的抓取。請注意,設置更高的限制不會自動增加抓取。
Crawl Budget是如何計算的呢?
Crawl Budget並沒有一個明確的單位,我們可以大概理解為搜索引擎“花多少心思和工夫來了解你的網站”。要回答這個問題,我們要了解哪些資源會佔用Crawl Budget。
除了HTML頁面之外,其他頁麵包含的資源如圖片、JS、CSS。另外alternate標籤中的URL比如其他語言的URL或者AMP、MIP頁面,還有Ajax自動發生的請求(如果該引擎去渲染頁面)也會被算入。
概括地說凡是你能夠在網站訪問日誌看到的來自爬蟲的請求都會消耗你的抓取配額。
如何提升自身網站的Crawl Budget呢?
Crawl Budget的上限完全由你的網頁在搜索引擎眼中的重要性決定。它由搜索引擎對你的網站/網頁的抓取需求(Crawl Demand)來決定。用Matt Cutts的話說:
The best way to think about it is that the number of pages that we crawl is roughly proportional to your PageRank. So if you have a lot of incoming links on your root page, we’ll definitely crawl that. Then your root page may link to other pages, and those will get PageRank and we’ll crawl those as well. As you get deeper and deeper in your site, however, PageRank tends to decline.(考慮它的最佳方式是我們抓取的頁面數量與您的PageRank大致成比例。 因此,如果您的根頁面上有很多外鏈,我們肯定會抓取它。 然後你的根頁面可以鏈接到其他頁面,那些將獲得PageRank,我們也會抓取它們。 然而,隨著您的網站越來越深入,PageRank往往會下降。)
另外,當我們網站改版的時候,搜索引擎會發現網頁和索引中的不一樣了,這會觸發大量重新爬取。就像上圖所講的,Your Mileage May Vary,你的消費量可能不一樣,Crawl Budget是一個動態的值。
總之,就像下圖所概括的那樣,當網站較小時,不管SEO做得好不好,大部分情況下Crawl Budget會大於Crawl Demand,也就是配額大於需求。而當網站較大時,配額要小於需求,那就會出現我們上面提到的漏爬和遲爬的現象了。
那麼既然我們只能通過提升PageRank來提升網站的Crawl Budget那麼我們談Crawl Budget還有什麼意義?意義就是你可以至少避免浪費啊,一塊錢當兩塊錢花。
浪費Crawl Budget的情況有哪些?
要避免浪費就要了解浪費Crawl Budget的情況有哪些。
重複內容頁面
許多網站在URL後面會帶一些跟踪參數,或者會有sessionid等參數。這會造成同一內容的網頁有各種URL版本。這無疑增加了搜索引擎識別這些網頁的負擔,即便使用了canonical標籤(Google並不能很好支持),這並不能阻止搜索引擎對這些頁面進行爬行。解決的方法除了在各個站長平台設置忽略這些參數,更需要充分管理好URL的版本。
另外,一些網站使用了多維度的篩選導航(Facet Navigation),這會讓網頁數量幾何級增加。假設有三個維度:顏色,內存,尺寸各有3個選項,那麼就會自然生成3x3x3的27個頁面,根據選擇次序不同又會有3×2中變形,那就是162個頁面。這些頁面通常會自帶不同的URL,這樣也會增加搜索引擎的爬行負擔。
跳轉鏈
本來一個頁面只需要一次請求便可以完成,每一次301或者302跳轉又都會額外增加HTTP的請求數。這樣對爬行的效率產生了負面影響,造成了浪費。
低質量頁面
大量的低質量頁面會讓網站變成低質量的網站,這就會降低抓取需求。搜索引擎並不想浪費時間在爬取低質量的網頁上,更不想讓搜索引擎的用戶去瀏覽這些網頁。因此要避免這些頁面出現在站內鏈接中,也要避免搜索引擎發現這些鏈接。
疏於維護的站點地圖
站點地圖往往是最容易被忽視的地方,筆者的許多客戶都存在站點地圖更新不及時,存在許多3XX甚至4XX或者5XX錯誤的情況。搜索引擎會定期查看這些鏈接,如果這些鏈接的問題嚴重,也會影響搜索引擎對您的網站的看法,從而降低爬行的慾望。
頁面慢,讀取超時
我們知道,對許多搜索引擎來說網頁讀取速度已經成為了排名因素之一。但是我們更要認識到,如果網頁速度慢,服務器反饋不及時,這會增加爬蟲的負擔。因為爬蟲會為了等這個請求的響應不能及時進行下一個請求。
再從另一個角度來講,搜索引擎也不希望用戶去瀏覽一個難以打開的網站而降低搜索引擎使用的體驗。那麼放棄索引或者放棄爬行就會是最糟糕的情況了。
大量noindex頁面
雖然國內的引擎如Google並不支持noindex標籤來防止搜索引擎索引該頁面,但是這標籤並不能阻止搜索引擎對網頁進行爬取。畢竟,不爬一下抓一下怎麼知道有沒有nonindex呢。
即便noindex頁面依然可以傳遞權重,如果這樣的頁面大量地存在於網站中,勢必會讓引擎做許多無用功。
所以如果noindex頁面有許多的話,也會浪費許多Crawl Budget哦。
Crawler Trap(蜘蛛黑洞)
蜘蛛黑洞或者爬蟲黑洞是網站上常見的讓爬蟲頭痛的問題。比如有個在線日曆,上面有下個月的鏈接,可想而知那會無限地“下個月”下去。這就會產生無數個頁面。谷歌把這個叫做“infinite space”。讓蜘蛛抓取這些無意義的頁面自然會浪費大量的Crawl Budget。
頁面被黑,垃圾訊息頁面
比無用訊息更糟糕的是有害訊息。對這類頁面,搜索引擎甚至是打擊的,更不要說正常提供抓取配額了。
使用共享主機或者共用IP
共享主機雖然方便經濟,但是由於數百個乃至上千個站點從一個IP進行流量吞吐,對搜索引擎優化來說是個很大的挑戰。這個問題一些雲主機也一樣。前面提到了Crawl Budget實際上很多時候會以IP來劃定,所以光是自己做好SEO是不夠的。選擇主機,獨立IP出口,甚至是與爬蟲鄰近的IP也是避免SEO被Crawl Budget影響的手段。
如何避免Crawl Budget的浪費?
了解了Crawl Budget浪費的常見情況,最後我們來談談如何避免抓取配額的浪費。主要的手段是合理使用robots.txt文件來指引搜索引擎哪些該爬,哪些不該爬。
但是robots.txt是相當複雜的SEO工具,一不小心會造成鏈接權重無法傳遞,或造成孤島頁面,甚至重要訊息未被抓取的情況。所以對Crawl Budget的優化,還是要請專業的SEO來操刀。
如果你對Crawl Budget感興趣,可以閱讀下面兩篇文章作為擴展內容,謝謝。
What Crawl Budget Means for Googlebot (需科學上網)
Crawl budget explained