原文:https://www.medianova.com/en-blog/2019/08/06/how-time-to-first-byte-ttfb-impacts-your-sites-performance
众所周知网站速度受许多因素的支配。虽然纷乱如麻,但理清它们并非不可能。这样说来,其中一个你可以尝试去解读和改善的指标就是首字节时间(TTFB,Time To First Byte)。
本文将帮助你彻底理解 TTFB 这一指标对 web 性能造成影响的基础信息。
所以,首字节时间 (TTFB) 到底是什么?
首字节时间 (TTFB) 是对终端用户首次请求 web 服务器和 web 服务器响应到终端用户之间这段时间的称呼。
使用 DNS 解析站点地址以及取回对发送到站点的首次请求的响应是导致这个时间发生的主要因素。
换言之,这主要发生在以下 3 个步骤中,并且这些阶段中的性能将在 TTFB 期间扮演活跃的角色,分别列出的是各个步骤中可能的重要因素:
步骤1:向站点地址提交首次请求
- DNS 响应时间(终端用户侧解析 DNS 请求有多块)
- 网站服务器到终端用户的距离,越短越好
- 网络稳定性
步骤2:由 web 服务器解析本次请求
- 物理硬件响应时间 (web 服务器解析请求有多快)
- 既有的服务器操作负载
- 数据中心任何网络相关的延迟
步骤3:向终端用户发送首个响应
- 终端用户的网速
- 连接稳定性
好的 TTFB,不好的 TTFB
实际上,这个问题因你站点的内容而异。取决于站点内容中动态数据和静态数据的占比,对好坏的判断会不同。通常来说,许多速度测试工具会给出以下的范围:
- 0 – 75ms 完美
- 75 – 200ms 理想
- 200 – 500ms 虽不足亦不远矣
- > 500ms 有问题
但是完全由动态数据组成的站点实际上会超出这些范围,基于站点内容判断 TTFB 总是会更合理一些。
是什么拖慢了 TTFB?
上面提到过的步骤 1 和步骤 3 中存在的 网络问题 会延长 TTFB。
类似的是,步骤 2 中,在处理请求期间,老旧的硬件和磁盘或内存中的问题会造成速度减慢。
磁盘的低 I/O 值将妨碍快速处理,也将累积许多排队的请求。
同样的,如果服务器硬件不足以应对操作或瞬间的请求峰值,也将导致一个延长的 TTFB。
另外,不优化的代码、数据库,以及 web 服务器配置,也会延宕接收到的请求。
最后,服务器上处理请求的软件也会减慢速度。
如何加快 TTFB 速度
了解到痛点之后,可以通过下列手段减少初始化响应时间:
- 首次启动时呈现静态数据
- 使用 CDN,也就是让站点内容离终端用户更近
- 代码优化:软件设置、编码性能的改善都能加快首次页面渲染
- 数据库查询优化:必须对数据库规范化和数据库操作进行全面检查
- 将数据缓存到内存中
- 尽可能使用最新的硬件,如新的 CPU、SSD 或 NVME 的固态硬盘
CDN 对 TTFB 的影响
基本上,这也是使用了一个健壮的 CDN 后你将获得的:
- 使用了 Anycast DNS 的 CDN 将会使用最近的 DNS 服务器并加速网站访问
- 请求会被路由到最近的服务器上
- 源服务器只用来处理新内容,CDN 缓存静态数据
- 更多的可用硬件资源
TTFB 对 web 性能的影响
实际上,因为首字节开启了数据返回的阶段,所以 TTFB 和后续事务的性能是息息相关的。
优化 TTFB 将确保站点的后续操作更高效。籍由一个好的 TTFB 所铺就的道路,后续的 I/O 操作将会更快。
从另一方面来说,用户体验会因为高性能得到极大改善。因为网站加载得更快了,由于等不及页面加载完就流失掉的潜在用户肯定也就减少了。
--End--