← 返回题目列表

TTFB 是什么?前端如何参与优化 TTFB?

高频 中等 第 16 / 29 题 更新于 2026/07/29
性能优化TTFB服务端性能CDN

简化版

TTFB 是从导航请求开始到收到 HTML 首字节的时间,受 DNS、连接、TLS、重定向、CDN、服务端渲染和后端接口影响。前端不能只说“这是后端问题”,因为路由策略、SSR 数据获取、缓存头、CDN 配置和重定向链都常由前端工程参与。

详细版

TTFB 是 LCP 的第一段,TTFB 高会拖慢后续所有资源发现。优化方向包括减少重定向、启用 CDN 和边缘缓存、合理设置 HTML 缓存策略、优化 SSR 数据依赖、流式渲染、预连接关键源、减少冷启动和服务端阻塞。

测量时要区分文档请求 TTFB、接口 TTFB 和资源 TTFB;还要区分实验室、RUM 与服务器日志。前端性能面试里,能把 TTFB 放进端到端链路讲清楚,会比简单甩锅后端更像真实工程经验。

完整版教学

一、TTFB 是页面加载链路的起跑线

浏览器拿不到 HTML,就发现不了大部分 CSS、JS 和图片。TTFB 慢 800ms,后面的 preload、图片压缩、代码分割再好,也是在晚起跑。

navigation start
  -> redirect
  -> DNS/connect/TLS
  -> request sent
  -> server work
  -> first byte received = TTFB

记忆钩子:TTFB 不是页面渲染完成时间,但它决定浏览器什么时候拿到“资源清单的入口”。

二、TTFB 包含的不只是后端执行

TTFB 经常被误解成服务端接口耗时。实际上浏览器视角的 TTFB 包含网络连接、重定向、TLS、代理、CDN 命中和服务器生成响应等多段。

分段可能问题优化方向
重定向http 到 https、多级跳转合并跳转、直接访问最终 URL
连接DNS/TCP/TLS 慢CDN、连接复用、preconnect
CDN未命中或回源慢边缘缓存、缓存键治理
服务端SSR/API 慢并行数据、缓存、流式输出

如果 TTFB 为 1200ms,其中重定向 250ms、TLS 150ms、服务端 700ms、传输 100ms,那么只优化数据库查询也最多拿回一部分时间。

三、前端为什么要关心 HTML 缓存

静态站点、营销页、文档页和部分列表页可以通过 CDN 缓存 HTML。HTML 命中边缘后,用户不必每次回源,TTFB 通常显著降低。

Cache-Control: public, max-age=60, stale-while-revalidate=300

这类策略表示资源 60 秒内可直接用,之后一段时间可先返回旧内容并后台更新。具体策略要看业务是否允许短暂旧数据,不能把所有 HTML 都无脑长缓存。

四、SSR 页面要优化数据依赖图

SSR 的优势是首屏内容进入 HTML,但如果服务端必须串行等多个接口,TTFB 会升高。前端需要参与设计数据获取顺序,而不是把所有请求都塞进页面渲染前。

不理想:user -> permission -> product -> recommend  串行 4 次
更好:user/permission 并行,非首屏 recommend 延后

假设 4 个接口各 150ms,串行至少 600ms;其中 3 个可并行时,关键等待可能降到 200ms 左右。真实收益还受网络、服务端计算和缓存影响,但依赖图优化方向很明确。

五、流式渲染和早 flush 能改善等待感

有些页面无法把所有服务端工作压到很短,可以先发送壳、关键 CSS 链接或首屏骨架,让浏览器更早开始解析和下载资源。流式 SSR 的价值就在于不要等完整 HTML 全部生成后才发第一个字节。

传统 SSR:等待全部数据 -> 拼完整 HTML -> 返回
流式 SSR:返回 shell -> 分块返回内容 -> 客户端逐步显示

流式不是万能。它要求框架、网关、CDN 和压缩链路支持分块传输;如果中间层缓冲整个响应,流式优势会被吃掉。

六、测量 TTFB 要用多个视角

浏览器 Navigation Timing 能看到用户视角,服务器日志能看到应用处理时长,CDN 日志能看到命中、回源和边缘耗时。三者结合才能定位。

const nav = performance.getEntriesByType('navigation')[0]
console.log(nav.responseStart - nav.requestStart)

上面只是请求发出到首字节的一段;完整导航 TTFB 通常从导航开始算到 responseStart。面试时不必纠结 API 字段细枝末节,但要说明“浏览器口径”和“服务器口径”不同。

七、常见误区与追问

  • 误区:TTFB 完全是后端问题。 前端参与 SSR、缓存头、CDN、路由、重定向和数据依赖设计。
  • 误区:TTFB 高但 LCP 可以轻松补回来。 TTFB 是 LCP 前段,HTML 晚到会推迟资源发现。
  • 误区:所有 HTML 都应该强缓存。 登录态、个性化和强实时页面需要谨慎设计缓存键与失效。
  • 追问:CDN 命中为什么能降低 TTFB? 边缘节点直接返回响应,减少跨地域回源和服务端计算。
  • 追问:SSR 为什么可能让 TTFB 变差? 服务端渲染和数据等待进入文档响应前,首字节可能被推迟。
  • 追问:如何定位 TTFB 慢在哪里? 结合 RUM Navigation Timing、CDN 日志、服务端 trace 和 release 维度。

八、加强记忆

TTFB 用“入口、分段、缓存、依赖图”记:它是 HTML 起跑线,包含重定向、连接、CDN 和服务端工作;前端要减少跳转、用好边缘缓存、优化 SSR 数据依赖和流式输出;定位时用浏览器、CDN、服务端三份证据拼完整链路。