Cloudflare宣布開始支援能夠有效提升瀏覽器頁面載入效能的Early Hints技術,而這項技術,除了Google Chrome 94開發頻道版本已經支援之外,Microsoft Edge和Mozilla Firefox也都打算支援。

Early Hints的概念,是在瀏覽器向伺服器發出請求,等待收到回應之前,由邊緣網路先發送頁面載入提示給瀏覽器,讓瀏覽器先開始準備渲染頁面需要的資源,當瀏覽器收到伺服器回應後,就能夠更快速地完整渲染。

官方提到,Early Hints在他們的初始測試中,可以提升瀏覽器首次存取網站頁面30%以上的載入速度。目前Early Hints已經以測試功能推出,Cloudflare用戶可以在儀表板的設定中,請求啟用Early Hints。

瀏覽器存取網站時需要收到指令,確定需要渲染的內容和取用的資源,才能完整繪製出網頁頁面,而這些指令來自於伺服器的回應,由於發送這些回應的伺服器,通常需要時間編譯資源,因此這個回應的時間,被稱為伺服器思考時間,當伺服器忙碌時,瀏覽器便會進入空閒狀態,直到收到伺服器的指令才能開始動作。

而Early Hints能夠在伺服器思考時間,非同步地向瀏覽器發送提示,讓瀏覽器在來源伺服器還在編譯時,就先開始載入資源,藉由在瀏覽器收到完整回應之前,先發送指令給瀏覽器,可以讓瀏覽器更快地載入網頁,因此終端用戶能夠獲得更佳的瀏覽體驗。

過去也有許多嘗試解決這個問題的方法,特別是HTTP/2的伺服器推送功能,但伺服器推送存在問題,就連Chrome都打算要棄用和刪除這項功能,在Chrome的網路論壇討論要刪除HTTP/2和gQUIC的討論串中,負責Chrome網頁效能的工程師Pat Meenan提到,只要伺服器推送能夠智慧地完成,不推送已經存在於快取中的資源,而且在CDN邊緣回傳到來源伺服器要求HTML時,剛好填補瀏覽器等待時間,那看似是一個良好的解決方案。

可惜的是,在實際情況中,同時滿足這些條件的時機非常罕見,Pat Meenan表示,幾乎在所有情況下,推送的資源最終都會阻塞HTML、CSS和渲染資源,延遲HTML是特別糟糕的情況,因為會同時延遲瀏覽器對頁面所有資源的探索。而且事實上,也僅有部分瀏覽器和伺服器支援推送功能,主要的CDN廠商則認為該功能實作窒礙難行,因此也未大規模支援。

Cloudflare提到,嚴格來說,Early Hints是一個網頁標準,定義了新的HTTP狀態代碼103 Early Hints,其定義了客戶端和伺服器之間新的互動行為,在伺服器準備200 OK回應時,Cloudflare系統便會先向系統發送103,並包含呈現網頁所需要資源的提示,該提示有助於加速頁面載入,以有效減少用戶可感知到的延遲。

在伺服器回應編譯完成前,就可以讓瀏覽器在伺服器思考時間接到提示,預期接下來需要載入並獲取需要的資源,這些資源包含瀏覽器渲染頁面需要的內容、快取內容和其他啟發式方法,以準備顯示頁面,直到伺服器回傳完整的回應。由於Cloudflare位於客戶端和伺服器的邊緣網路,因此能夠很好地代替伺服器,向客戶端發出預先載入提示。

Cloudflare用戶不用任何變更,就能夠應用這項新技術,Cloudflare位於網路邊緣,除了可以快速提供提示之外,Cloudflare只要看過客戶與其終端使用者的請求和回應資料流,就可以使用這些資料自動產生提示。用戶可以將Early Hints結合rel=preconnect使用,來解決資料從未經請求過的問題。

官方解釋,現在網頁動輒載入數百個第三方資源,並且與外部來源建立連接和TLS對話,花費不少時間,在伺服器思考時間,能夠預先與第三方進行連結,也有助於加速頁面載入。未來,Cloudflare準備提供Smart Early Hints功能,藉由使用機器學習技術,來產生Early Hints。

目前Cloudflare開始與各家瀏覽器合作,以實現Early Hints,Chrome、Edge和Firefox都決定要支援Early Hints,目前用戶可以在Google Chrome 94版本,看到Early Hints實際帶來的效能加速效果。

熱門新聞


Advertisement