[译] 首字节时间 (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

来源:稀土掘金

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

相关实践学习
Serverless极速搭建Hexo博客
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
相关文章
|
存储 算法 程序员
【OSTEP】超越物理内存:机制 | 请求分页 | 交换位与存在位 | 页错误
【OSTEP】超越物理内存:机制 | 请求分页 | 交换位与存在位 | 页错误
69 0
|
6月前
|
编解码 前端开发
前端长度单位的区别是什么?
前端长度单位的区别是什么?
47 2
|
6月前
|
存储
汉字和数字站几个字节,估算内存占用情况
该文内容讲述了字符和字节的关系:中文标点占3字节,英文字母或数字占1字节,英文标点也占1字节。1字节等于8字位,1字位是1个二进制数。此外,还介绍了存储单位的换算:1B=8b,1KB=1024B,1MB=1024KB,1GB=1024MB。其中,b代表字位,B代表字节,KB是千字节,MB是兆字节,GB是吉字节。
153 2
|
人工智能 算法
靠这个信息差,我省了至少上千块!
靠这个信息差,我省了至少上千块!
193 0
靠这个信息差,我省了至少上千块!
|
机器学习/深度学习 数据可视化 大数据
Alibi位置向量外推性:看起来很长其实还是短
Alibi位置向量外推性:看起来很长其实还是短
3793 1
Alibi位置向量外推性:看起来很长其实还是短
|
存储 算法 索引
哈希系列(空间换时间)
哈希系列(空间换时间)
|
SQL 存储 关系型数据库
怎么快速插入 100 条数据,用时最短
多线程插入(单表) 问:为何对同一个表的插入多线程会比单线程快?同一时间对一个表的写操作不应该是独占的吗? 答:在数据里做插入操作的时候,整体时间的分配是这样的: 链接耗时 (30%) 发送query到服务器 (20%) 解析query (20%) 插入操作 (10% * 词条数目) 插入index (10% * Index的数目) 关闭链接 (10%)
143 0