1. 程式人生 > >網站載入 Waiting (TTFB) 時間過長的原因和解決辦法

網站載入 Waiting (TTFB) 時間過長的原因和解決辦法

https://www.wpzhiku.com/wating-ttfb-too-long/

什麼是 Waiting (TTFB) 時間

TTFB 是 Time to First Byte 的縮寫,指的是瀏覽器開始收到伺服器響應資料的時間(後臺處理時間+重定向時間),是反映服務端響應速度的重要指標。就像你問朋友了一個問題,你的朋友思考了一會兒才給你答案,你朋友思考的時間就相當於 TTFB。你朋友思考的時間越短,就說明你朋友越聰明或者對你的問題越熟悉。對伺服器來說,TTFB 時間越短,就說明伺服器響應越快。

TTFB 時間多長算長?

因為每個伺服器的硬體和網路環境都不盡相同,每個伺服器的 TTFB 時間也不相同。如果想知道你的伺服器可以優化到什麼程度,大家可以上傳一些靜態的 HTML 頁面到伺服器,然後開啟這些靜態頁面,看一些這些頁面的 TTFB 時間,大多數伺服器的 TTFB 時間都在 50 ms 一下,這個時間就是我們優化時候可以追求的時間。下面兩個圖中的 TTFB 時間分別是本站所在伺服器的靜態和動態網頁 TTFB 等待時間。


根據我們的測試,TTFB 時間如果超過了 500 ms,使用者在開啟網頁的時候就會感覺到明顯的等待。我麼可以把 500 ms 以上認為是 TTFB 時間過長。可見,WordPress 智庫的伺服器還不算差。

TTFB 過長的原因

我們知道,對於動態網頁來說,伺服器收到使用者開啟一個頁面的請求時,首先要從資料庫中讀取該頁面需要的資料,然後把這些資料傳入到模版中,模版渲染後,再返回給使用者。由於查詢資料和渲染模版需要需要一定的時間,在這個過程沒有完成之前,瀏覽器就一致處於等待接收伺服器響應的狀態。有些服務的效能比較低,或者優化沒做好,這個時間就會比較長。

當然,如果伺服器到使用者之間的網路不好,(比如,伺服器在歐洲,使用者在中國,使用者開啟網頁的時候,請求需要跨越千山萬水才能達到伺服器),伺服器接收到使用者請求的時間過長,也是導致 TTFB 時間過長的原因。

有時候,頁面在使用者的瀏覽器中儲存了過多的 Cookie,每次請求,這些 Cookie 都要傳送到伺服器,伺服器都要處理這些 Cookie,這也是導致 TTFB 時間過長的原因之一。

Waiting (TTFB) 時間過長的解決辦法

知道了原因,解決辦法就顯而易見了,那就是縮短伺服器響應時間,最簡單直接並且有效的辦法就是使用快取,把 PHP 和 MySQL 的執行時間最小化,一些快取外掛可以把 SQL 查詢結果快取起來,把幾十次查詢結果轉換為幾次;一些快取外掛可以直接把使用者所請求的頁面靜態化,使用者開啟網頁時,相當於直接從伺服器上下載了靜態頁面。

如果是網路原因,換一個伺服器是比較直接的解決辦法。如果因為一些原因不能換伺服器,可以使用一個 CDN,把頁面同步到離使用者比較近的 CDN 節點上,也是一個不錯的解決辦法。

如果是 Cookie 的原因,可以通過修改應用程式,刪除一些不必要的 Cookie,或者精簡 Cookie 內容,縮短 Cookie 的有效期等,都是解決辦法。