谷歌的網絡

最近的公告:這個傳奇仍在繼續
Googlebot不會發出HTTP / 2請求
幸運的是,谷歌的網絡性能工程師伊利亞·格里戈里克(Ilya Grigorik)讓所有人都看到Googlebot如何抓取網站及其背後的技術:

如果這還不夠,Googlebot不支持WebSocket協議。這意味著您的服務器在請求之前無法向Googlebot發送資源。支持它不會減少網絡延遲和往返;它只會減慢一切。現代瀏覽器提供了許多加載內容的方法,包括WebRTC,WebSockets,從驅動器加載本地內容等。但是,Googlebot僅支持HTTP / FTP,有或沒有傳輸層安全性(TLS)。

Googlebot支持SPDY
在我的研究期間和John Mueller的反饋之後,我決定諮詢HTTP / 2專家。八拓科技有限公司seo聯繫了Mobilio的Peter Nikolow,並讓他看看我們能做些什麼來找到關於Googlebot的HTTP / 2支持的最終答案。他不僅為我們提供了幫助,還為我們創造了一個實驗供我們使用。其結果非常簡單:Googlebot支持SPDY協議和下一代協議導航(NPN)。因此,它不能支持HTTP / 2。

以下是彼得的回應:

我進行了一項實驗,顯示Googlebot使用SPDY協議。因為它支持SPDY + NPN,所以它不支持HTTP / 2。 SPDY的持續支持有很多缺點:

該協議易受攻擊
谷歌瀏覽器不再支持SPDY,而是支持HTTP / 2
服務器一直忽視支持SPDY。讓我們來看看NGINX示例:從版本1.95開始,它們不再支持SPDY。
Apache不支持開箱即用的SPDY。您需要安裝由Google提供的mod_spdy。
為了檢查Googlebot及其使用的協議,我利用了s_server,這是一個可以調試TLS連接的工具。我使用Google Search Console Fetch和Render將Googlebot發送到我的網站。

這是此工具的屏幕截圖,顯示Googlebot正在使用下一個協議導航(因此SPDY):

我將簡要介紹一下如何進行自己的測試。您應該知道的第一件事是您不能使用腳本語言(如PHP或Python)來調試TLS握手。原因很簡單:這些語言僅查看HTTP級數據。相反,您應該使用特殊工具來調試TLS握手,例如s_server。

輸入控制台:

sudo openssl s_server -key key.pem -cert cert.pem -accept 443 -WWW -tlsextdebug -state -msg
sudo openssl s_server -key key.pem -cert cert.pem -accept 443 -www -tlsextdebug -state -msg
請注意這些命令中“-WWW”和“-www”選項之間的輕微(但重要)差異。您可以在s_server文檔中找到有關其用途的更多信息。

接下來,邀請Googlebot訪問您的網站,方法是在Google Search Console中提取和渲染,或在Google移動測試中輸入網址。

正如我上面所寫,Googlebot支持SPDY沒有合理的理由。該協議易受攻擊;沒有現代瀏覽器支持它。此外,服務器(包括NGINX)忽略了支持它。 Googlebot能夠使用HTTP / 2進行抓取只是時間問題。只需在您自己的服務器上實施HTTP 1.1 + HTTP / 2支持(您的用戶會注意到由於加載速度更快)並等到Google能夠使用HTTP / 2發送請求。

概要
2015年11月,John Mueller表示他希望Googlebot通過從2016年初開始發送HTTP / 2請求來抓取網站。我們不知道為什麼,截至2017年10月,還沒有發生。

我們所知道的是Googlebot不支持HTTP / 2。它仍然通過發送HTTP / 1.1請求進行爬網。這個實驗和“Google搜索上的渲染”頁面都證實了這一點。 (如果您想更多地了解Googlebot背後的技術,那麼您應該查看他們最近分享的內容。)

目前,我們似乎必須接受現狀。我們建議Robert(以及您的讀者)在您的網站上啟用HTTP / 2以獲得更好的性能,但繼續優化HTTP / 1.1。您的訪客會注意到並感謝您。

關於goralewicz – BartoszGóralewicz是Elephate的首席執行官,Elephate是一家專門為各種規模的企業(包括知名國際公司)預防和治療技術SEO問題的SEO機構。他熱衷於分享他的專業知識,並經常發表詳盡的案例研究。在他的休息時間,他喜歡與他的妻子和兩個年幼的女嬰共度時光