什么是 TTFB, 为什么 TTFB 很重要
目录
- 什么是TTFB
- 揭开
TTFB
的神秘面纱
我正在为客户做一个电子商务的网站,对性能方面要求较高,简单的说就是对页面加载时间有要求。页面图片加载速度有多快,取决于开始渲染的时间。所以,什么时间开始渲染就显得很重要。
Time to First Byte(TTFB)
是一个前端开发人员很容易忽略的指标,因为它即将进入后端领域。不过,据我了解,
一个快的 TTFB
不一定意味着你会有一个快速的网站,但一个慢的 TTFB
一定会意味着网页慢。
作为前端开发者,你可能没有能力独自对 TTFB
进行改进。但你必须要知道,高 TTFB
的问题会影响页面性能。你做的其他优化,比如优化图片、清除关键路径、异步加载网页字体这些努力都会受到影响。
所以你应该优先消灭那些 TTFB
带来的问题,而不应该忽略 TTFB
对页面性能的影响。
什么是 TTFB?
TTFB
的时间线不是很明显,查看大图/质量(375kb)
TTFB
包含了许多不同的东西,但由于具体细节不好分别描述,因此我们经常会忽略它。很多人以为 TTFB
是花销在服务器端的时间,这其实只是其中很少的一部分而已。
不知道大家注意到没有,TTFB 计算的是整个延迟的往返时间。 TTFB
不仅仅是服务器上花的时间,它还包括从我们设备到服务器,再从服务器到设备的时间。(没错,这才是真正的 TTFB。)
有了这个知识,我们就能理解为什么 TTFB
在移动设备上的增长异常显著。你可能会这样想,服务器根本不知道我在使用移动设备,怎么会增加 TTFB
呢?移动网络通常都有高延迟连接。如果你的往返时间(RTT),从您的手机到服务器再返回到手机,花销了250ms,那么你就会立即看到 TTFB
时间有增加。
读完本文后,我希望你能记住一句话。TTFB 会受到延迟的影响。
那 TTFB
究竟包含了哪些东西呢?下面是一个详尽无遗的列表,顺序无先后。
延迟:如上所述,我们计算的是从服务器接收到请求到再到发出后的时间。伦敦的一台设备请求纽约的一台服务器,理论上最理想的环境,光纤速度是28毫秒,但实际情况可能接近75毫秒。 这就是为什么我们要使用
CDN
的原因:即使在互联网时代,在地理位置上离你的客户更近也是有优势的。路由: 如果您正在使用 CDN ーー而且您应该这样做! ーー利兹的一个客户可能会被路由到 MAN 数据中心,结果发现他们请求的资源不在那个 PoP 的缓存中。 因此,它们将被路由到您的原始服务器,然后从那里检索它。 所以如果你的源服务器是在弗吉尼亚州,将大幅增加
TTFB
的时间开销。文件读取:服务器只是从文件系统读取静态文件,如图像或系统表,都是有代价的。 这些都会被计算到你的
TTFB
时间中。优先级:
HTTP/2
有一个(重新)优先级机制,它可以选择在服务器上停止较低优先级的响应,同时发送较高优先级的响应。 撇开H/2
优先级问题不谈,即使H/2
运行顺利,这些预期的延迟也会给你的TTFB
带来影响。运行时: 运行时需要时间是显而易见的,所以这可能是
TTFB
时间开销中占比较重的。数据库查询: 页面如果需要获取来自数据库的数据,那么在对数据库进行检索时将会产生时间成本,增加
TTFB
时间。API 调用: 如果您需要调用任何
API
(内部或其他)来填充页面,开销将计入您的TTFB
。服务器端渲染: 服务器渲染一个页面的成本可能是微不足道的,但它仍然会增加你的
TTFB
时间。廉价的托管服务器: 如果托管服务器的成本高于性能,那通常意味着你要与其他网站共享一个服务器,服务器性能会降低,可能会影响你接收请求的能力,也可能在运行应用程序时出现硬件供电不足。
DDoS 或高负载: 与上一点类似,增加负载而无法自动扩容的应用程序会达到硬件基础设施的极限,进而导致性能大幅下降。
WAFs 和负载均衡器: 诸如 web 应用程序防火墙 或负载均衡器之类的服务放在你的应用程序之前也会对你的
TTFB
有所拖累。CDN 的特点: 尽管
CDN
是一个解决网络请求问题的重要方案,但在某些情况下,他们可能会增加TTFB
时间。 例如,请求折叠、边缘端包含 等)最后一英里延迟: 当我们想到伦敦的一台计算机访问纽约的一台服务器时,我们想象一下,如果我们暴力点,让两者是直接连接,行不行? 事实上,从我们自己的路由器到我们的 ISP (互联网服务提供商) ,有一系列更加复杂的中介,从手机信号塔到海底电缆。 最后一英里延迟 处理的是到达连接终点前无法比拟的复杂连接。
0 延迟的 TTFB 是不可能存在的!所以我们需要注意的是,以上列表任意项不好,不代表会使得 TTFB 时间增加。 但你看到的 TTFB
时长包含了上面各项内容。 在这里我不单独介绍某一项内容,只是介绍下这些都会影响到你的 TTFB 时长。所以现在想想,网页加载成功简直是太厉害了,堪称奇迹。
嗯,这部分就到这里了。
揭开 TTFB
的神秘面纱
现在是不是更加了解 TTFB 了?我们可以花时间开发一个工具,在chrome 开发者工具的网络请求中来显示 服务器时间Api。帮助我们识别和调试潜在的性能问题。
Server Timing API
允许开发人员在响应报头中查看的 Server-Timing HTTP
的数据,该报头包含应用程序测量自身的计时信息。
这正是去年我们在 BBC iPlayer
所做的:
Server-Timing Header
可以添加进任何响应头中。查看全部
注意: 服务器计时不是浏览器自带的: 您需要实际测量上面列出的每一项,然后用相关数据填充服务器计时头。 浏览器所做的只是在相关工具中显示数据,使其在前端可用:
[外链图片转存失败(img-W8B4r5N9-1569294463933)(https://csswizardry.com/wp-content/uploads/2019/08/screenshot-ttfb-iplayer.png)]
在浏览器中,我们可以看到 TTFB 详细的花销内容。 [查看全部](https://csswizardry.com/wp-content/uploads/2019/08/screenshot-ttfb-iplayer-full.png)
为了帮助你去实现这个功能,Christopher Sidebottom
在我们优化 iPlayer 的时候写了他的服务器计时 API) 的实现。
理解 TTFB
对于性能提升工作是很重要的。TTFB
会有连锁反应,它的时间开销的长短会直接影响到页面性能。
如果你跑出大门时速度慢了,你将在剩下的比赛中追赶上来。
原文地址:https://csswizardry.com/2019/08/time-to-first-byte-what-it-is-and-why-it-matters/
什么是 TTFB, 为什么 TTFB 很重要相关推荐
- Time to First Byte(TTFB)与Web性能优化
原文地址:Time to First Byte: What It Is and Why It Matters – CSS Wizardry – Web Performance Optimisation ...
- 网页调试工具显示waiting TTFB时间过长的问题
当我发现网页加载很慢的时候,打开开发者调试工具,有时可以发现Waiting TTFB (Time To First Byte)的时间比较长. 什么是TTFB? TTFB就是最初的网络请求被发起到从服务 ...
- php pdo ttfb慢,接口速度慢问题查找(TTFB时间长)
前些天自己写了一个网站,但是发现接口的速度按超级慢,业务逻辑并不复杂,原因究竟在哪呢? 首先说一下,我的数据库和项目均在同一台服务器上,按道理来说,接口访问本地的数据库应该会很快才对. 后来我发现线上 ...
- 网站加载 Waiting (TTFB) 时间过长的原因和解决办法
关注网页前端性能的朋友,在优化网页性能的时候都会遇到网站加载 Waiting(TTFB)时间过长的问题.对于没有优化过的 WordPress 站点,TTFB 时间经常超过了页面内容的下载时间,为用户带 ...
- 前端抱怨 API 响应慢,怎么办?
欢迎关注方志朋的博客,回复"666"获面试宝典 分析API的耗时是将API的总耗时拆分为不同的部分,清晰的知道是什么原因导致耗时过高.我们借助不同的工具,在不同的网络环境下进行耗时 ...
- Mimir:通过AI向所有人提供视频服务
点击上方"LiveVideoStack"关注我们 作者 | Fengjiao Peng 译者 | 姜金元 技术审校 | 曾凯 Mimir 影音探索 #004# 据思科公司的一项调查 ...
- 前端抱怨API响应慢,怎么办?
点击关注公众号,实用技术文章及时了解 来源:juejin.cn/post/6936063402640932878 分析API的耗时是将API的总耗时拆分为不同的部分,清晰的知道是什么原因导致耗时过高. ...
- 【前端性能优化】 --- 一次总结明白
一.性能测试 network面板: 从面板上我们可以看出一些信息: 请求资源size 请求资源时长 请求资源数量 接口响应时长 接口发起数量 接口报文size 接口响应状态 瀑布图 瀑布图是什么呢? ...
- Google Chrome浏览器使用技巧
前言 Google Chrome 浏览器是目前开发者最常用的浏览器,其具有稳定性.快速和安全性的特点,并创造出简单且有效率的用户界面,在全球桌面浏览器中大约有66%的占有率. 1.打开调试 通过按 C ...
最新文章
- opencl fft实例整理
- 自学python需要下载什么软件-学python下载什么软件开发
- 如何配置pom.xml用maven打包java工程
- Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
- 根据当前时间如何找到上月的第一天和最后一天?
- 2.QT中使用资源文件,程序打包
- convert.todatetime指定日期格式_MATLAB的时间与日期
- 深入实践Spring Boot1.3 使用Spring Boot
- 高等院校计算机考试等级,全国高等院校计算机等级试考试大纲.doc
- https阿里云证书购买与apache环境配置
- linux ubuntukylin和deepin操作系统的比较及改进方向的建议
- 小程序 用户反馈_用户反馈如何提高我的应用程序的安全性
- Named Entity Recognition for Chinese Social Media with Jointly Trained Embedding 笔记
- 【绝对干货】Swift是花拳绣腿吗?从Swift谈开发语言与程序员的职业发展
- css选择最后一个元素
- 深度学习基础----线性模型
- YOLOv5训练KAIST数据集
- 【PHP】 毫秒级时间戳和日期格式转换
- wms、wmts、wfs等地图服务区别
- Access to XMLHttpRequest at ‘http://localhost:8082/sockjs-node/info?t=1610442684722‘ from origin ‘ht