time to first byte ttfb

你須知道第一個位元組時間 TTFB 的一切

Written by

Feature Photo by Unsplash+

什麼是 TTFB ? 了解和最佳化 TTFB 是至關重要,因為它決定了載入時間並影響內容到達用戶的速度,這不僅僅是一個指標,它是提高網站效能及速度的基礎。

TTFB 是網站性能第一個基礎部分,不能解決這個問題,你就不可能真正擁有一個速度出色的網站。

內容目錄:

  • TTFB 的過程
  • 什麼是好的 TTFB ?
  • 重新導向、DNS 和 TLS
  • 最佳化 TTFB

TTFB 的過程

什麼是 TTFB ? 可以參考我之前寫的「如何減少 TTFB 以改善 WordPress 速度最佳化」文章。

就以一個網頁載入順序 / 時間而言,TTFB 是載入網站時第一件發生的事情,它發生在頁面上視覺方式和繪製任何內容之前,我們經常被稱為「伺服器回應時間」。

但這不是 Google 官方的 Core Web Vitals 重要指標,只有 LCP、INP 和 CLS 是你必須通過或失敗的正式指標,所以,很多人會忽略 TTFB 的重要性。

但是,TTFB 為何很重要 ?

因為 TTFB 是感知性能,感覺網站有多快 ,這一點與 PageSpeed Insights 的

分數有關連,對指標具有巨大的影響。

TTFB 是以下幾個部分組成:

  • 重新導向
  • DNS 查找
  • SSL / TLS
  • 快取
ttfb process

TTFB 的過程發展:
HTTP 連接、重定向 (HTTP 301 → HTTPS) → DNS → SSL 連接 → 快取

什麼是好的 TTFB?

根據 Google 的說法,他們希望你的 TTFB 時間低於 800 ms (毫秒),我個人建議目標是 300 ms 以下。

good ttfb values

重新導向、DNS 和 TLS

在測試 TTFB 時,不僅看到伺服器回應時間,還有之前提到 TTFB 組成的部分 (重新導向、DNS 和 TLS)。

例如:在 GTmetrix 測試中,你可以查看到 DNS 查找時間、連線、SSL / TLS、等待時間等。

ttfb 02

重新導向的影響

假設我用 URL 的 HTTP 版本而不是 HTTPS 版本進行 TTFB 速度測試,我們可以看到,第一個請求到 HTTP 版本有自己的時間消耗,然後,301 再轉到 HTTPS 版本,它又消耗了更多時間。

ttfb 03

TTFB 整個過程需要 168 ms + 231 ms = 399 ms 完成。

這包含了 HTTP 轉 HTTPS 時間 + DNS 解析時間 + SSL 握手時間 + 等待時間的總合。

最佳化 TTFB

沒有其他的答案了,確定 TTFB 速度的最重要因素之一,就是你的主機了。

在你考慮 TTFB 其他最佳化方法之前,首先應該考慮你的網站主機。

Google

更高品質的主機提供者只會擁有更快的伺服器、更多資源、更好的正常運行時間等。

網站快取

最佳化 TTFB 的第一件事情,就是安裝快取外掛,例如:WP Fastest Cache、WP Rocket 或 WP Super Cache。

如果你的託管主機商已經有提供快取解決方案,例如:Kinsta CacheCloudways 的 Breeze 快取等,那麼最好使用它,因為,他們比任何人都更了解他們自己的主機環境。

沒有快取的 TTFB

ttfb 04

有快取的 TTFB

ttfb 05

• TTFB 時間減少 63.86%

距離是一個大問題

TTFB 對於瀏覽者的距離的影響:距離越遠,TTFB 時間越大。

你的 WordPress 網站主機的地點,位於你的客戶 (瀏覽者) 間的距離,是一個重要的關鍵因素。

主機位置在東京,瀏覽者在香港

ttfb 05

主機位置在東京,瀏覽者在英國

ttfb 06

• TTFB 時間增加 257.43 %

使用邊緣快取

如果,你的客戶 (瀏覽者) 遍佈全球,解決 TTFB 距離問題的唯一方法是利用邊緣快取。

邊緣快取方式與加速 CSS、JS 和圖片的傳統 CDN 不同,邊緣快取從 Cloudflare 邊緣伺服器 (全球多個地點) 為你的整個網站(HTML、CSS、JS 和圖片)提供服務。

選擇有邊緣快取的主機託管商,例如:KinstaRocket.net 主機商。

如果,你使用的主機沒有此功能,可以使用付費的 Cloudflare APO (5 美金 / 月) + Cloudflare 外掛程式來實現相同的效果。

其實,我很不建議使用 Cloudflare 免費或付費的服務,因為對台灣不友善的網路,只會加大 TTFB 的時間。

有時 Cloudflare 也有安全的優勢,完全取決於你的考量。

邊緣快取對全球 TTFB 的影響有多大 ?

這是使用 Rocket.net 主機的邊緣快取,主機位置位於新加坡,當遠離主機位置的國家時,TTFB 的時間變化都可以保持在 200 ms 之內。

ttfb 測試

這是一般主機,沒有邊緣快取伺服器,距離主機位置越遠的國家,TTFB 時間越大。

ttfb test 2

增加快取的存活時間 (TTL)

增長快取的存活時間之前,要先明白快取靜態頁面如何生成。

第一個瀏覽者 (訪客) 點擊網頁時,才會開始生成快取靜態頁面。

那第一個訪客點擊網頁時,TTFB 一定是比較長的時間,處於無快取的狀態,第二個訪客點擊網頁時,網頁才會是快取狀態。

如果,你的快取設定每 10 小時過期或更短時間,則訪客很大的機率在網頁未快取的情況下造訪網站,相對 TTFB 時間會增長。

我不希望常常有第一個倒霉者,那就要拉長快取的存活時間,讓訪客隨時都處於網站快取狀態。

大部份的外掛都可以調整快取存活時間 (自動清除更新內容)。

kinsta cache

我建議調整為 30 天,若是部落格網站,甚至可以增加到 1 年。

快取預熱

改善 TTFB 的另一個方法是預先載入快取,也稱為「預熱」,也就是 WP Rocket 外掛的 Preload Cache 功能。

簡單說,一旦快取被清除 (或存活時間到期),就會有一個自動化過程來重建網站快取,而且無需訪客的點擊。

這可以透過幾種不同的方式來實現:

  • 利用快取外掛本身的功能。
  • 定時掃描 WordPress sitemap.xml 地圖檔案重建快取。

你要知道,預先載入快取的缺點是,它會產生伺服器負載,要考慮伺服器是否可以承受。

減少清除快取的頻率

前面所說:我們增長了快取存活的時間,相對的,就要盡量減少清除快取的頻率,清除的頻率越高,就要重複的一直生成網站快取。

結論

我簡單做一個摘要:

  • TTFB 對後面的 FCP、LCP 有著重要的影響。
  • TTFB 必須低於 800 ms,但目標是低於 300 ms。
  • 一個高效能的主機是必須的。
  • 網站一定要有快取。
  • 邊緣快取伺服器解決了距離問題。
  • 減少 HTML 文件的大小和 DOM 元素的數量。
  • 增長快取存活的時間。
  • 預先載入快取 (快取預熱)。
  • 降低清除快取的頻率。

網站的速度並非一切都是完美的,由於某些功能原因,你需要繞過快取。

如果,你的網站是為全球各地的客戶提供服務,那麼 TTFB 是個重要的觀念。

追求網站的完美有時是浪費時間,就像 PageSpeed Insights 中的所有內容一樣。

隨著時間的改變,網站最佳化的方法會不斷改進,這就是 WordPress 的美妙之處。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

Your Mastodon Instance