[译] 首字节时间 (TTFB) 如何影响了网站性能

本文涉及的产品
云解析 DNS,旗舰版 1个月
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
简介: [译] 首字节时间 (TTFB) 如何影响了网站性能

原文:www.medianova.com/en-blog/201…

众所周知网站速度受许多因素的支配。虽然纷乱如麻,但理清它们并非不可能。这样说来,其中一个你可以尝试去解读和改善的指标就是首字节时间(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 操作将会更快。

从另一方面来说,用户体验会因为高性能得到极大改善。因为网站加载得更快了,由于等不及页面加载完就流失掉的潜在用户肯定也就减少了。


作者:云前端

链接:https://juejin.cn/post/6844904058096975885

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章
|
7月前
|
存储
汉字和数字站几个字节,估算内存占用情况
该文内容讲述了字符和字节的关系:中文标点占3字节,英文字母或数字占1字节,英文标点也占1字节。1字节等于8字位,1字位是1个二进制数。此外,还介绍了存储单位的换算:1B=8b,1KB=1024B,1MB=1024KB,1GB=1024MB。其中,b代表字位,B代表字节,KB是千字节,MB是兆字节,GB是吉字节。
255 2
|
7月前
|
NoSQL Redis 数据库管理
如何优雅的删除一个超过3000多万成员且内存占用超过1.8G的bigkey?
通过渐进式小批量删除Redis hash类型的bigkey。
73 0
|
算法 搜索推荐
数组中出现次数超过一半的数字(简单难度)
数组中出现次数超过一半的数字(简单难度)
124 0
数组中数字出现的次数 II(简单难度)
数组中数字出现的次数 II(简单难度)
108 0
|
机器学习/深度学习 存储 人工智能
当hahaAI超过小程序内存时!
今年年底,我将发布与我的书相关的所有应用,包括微信小程序、个人网站以及谷歌浏览器扩展程序。
当hahaAI超过小程序内存时!
|
测试技术
软件测试面试题: 字节所占空间?
软件测试面试题: 字节所占空间?
95 0
|
算法
【刷算法】数组中出现次数超过一半的数字
【刷算法】数组中出现次数超过一半的数字
|
IDE Java 开发工具
推荐一款代码神器,代码量至少省一半!
在我们 Java 项目里面,有很多 Java Bean 需要为每个属性生成 get/ set 方法,增删改属性都需要维护这些 get/ set 方法甚是麻烦。 今天给大家介绍一款能帮助我们简化这些代码的神器:Lombok!有了这个神器,你的 Java Bean 类的代码量至少可以省一半。
170 0
推荐一款代码神器,代码量至少省一半!
|
存储 算法 索引
哈希系列(空间换时间)
哈希系列(空间换时间)