跳至主要內容

    TTFB

    TTFB 是收到第一個位元組的時間,反映伺服器與網路延遲。TTFB 過高會拖累 LCP 與整體體感。

    定義

    TTFB(Time to First Byte)是瀏覽器從發出請求到收到第一個位元組的時間。它包含 DNS/TLS/網路與伺服器處理時間。TTFB 過高通常會導致 LCP 變差,間接影響轉換與競爭力。

    為什麼重要

    • TTFB 是 LCP 的上游因素,會直接拖慢首屏渲染
    • 慢站體驗差,會降低使用者留存與轉換率
    • 對全球流量,CDN 與邊緣部署能顯著降低 TTFB
    • 搜尋引擎在評估網站效能時會考量伺服器回應速度
    • 高 TTFB 會讓爬蟲抓取效率降低,影響抓取預算
    • 行動裝置網路較慢,TTFB 影響更明顯
    • 競爭對手網站快 0.5 秒可能就贏了轉換

    怎麼做(實作重點)

    • 使用 CDN 快取靜態 HTML/資源,降低地理距離延遲
    • 減少後端處理時間:快取查詢結果、避免冷啟動、優化資料庫查詢
    • 把可靜態化頁面用 SSG/prerender 輸出,完全繞過伺服器運算
    • 啟用 HTTP/2 或 HTTP/3,減少連線建立時間
    • 使用 Early Hints(103)提前推送關鍵資源
    • 監控 TTFB:用 Lighthouse、WebPageTest 或 RUM 持續追蹤
    • 優化 DNS 解析:使用快速 DNS 服務(Cloudflare DNS、Google DNS)

    範例

    html
    // 瀏覽器端測量 TTFB
    const [nav] = performance.getEntriesByType('navigation');
    const ttfb = nav.responseStart - nav.requestStart;
    console.log(`TTFB: ${ttfb.toFixed(0)}ms`);
    
    // 使用 PerformanceObserver 即時監控
    new PerformanceObserver((list) => {
      const nav = list.getEntries()[0];
      console.log('TTFB:', nav.responseStart - nav.requestStart);
    }).observe({ type: 'navigation', buffered: true });
    html
    // Cloudflare Worker 傳送 Early Hints
    export default {
      async fetch(request) {
        return new Response('Hello', {
          headers: {
            'Link': '</styles.css>; rel=preload; as=style',
            'Link': '</main.js>; rel=preload; as=script'
          }
        });
      }
    };

    相關連結

    常見問題

    關於這個詞彙的常見問答。

    回到詞彙表