网站首字节时间 (TTFB)详解 网站首字节时间加载时间过长怎么优化

众所周知网站速度受许多因素的支配。虽然纷乱如麻,但理清它们并非不可能。这样说来,其中一个你可以尝试去解读和改善…

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

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

网站加载 (TTFB) 时间过长的原因和解决办法

关注网页前端性能的朋友,在优化网页性能的时候都会遇到网站加载 Waiting(TTFB)时间过长的问题。对于没有优化过的 WordPress 站点,TTFB 时间经常超过了页面内容的下载时间,为用户带来不必要的等待时间。这个问题的主要原因是在服务器端,不熟悉服务器运维的朋友优化起来可能会不知道从哪里下手,今天我们就从各方面分析一下网站加载 Waiting (TTFB) 时间过长的原因和解决办法。

什么是 Waiting (TTFB) 时间
TTFB 是 Time to First Byte 的缩写,指的是浏览器开始收到服务器响应数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要指标。就像你问朋友了一个问题,你的朋友思考了一会儿才给你答案,你朋友思考的时间就相当于 TTFB。你朋友思考的时间越短,就说明你朋友越聪明或者对你的问题越熟悉。对服务器来说,TTFB 时间越短,就说明服务器响应越快。

TTFB 时间多长算长?
因为每个服务器的硬件和网络环境都不尽相同,每个服务器的 TTFB 时间也不相同。如果想知道你的服务器优化可以到什么程度,大家可以上传一些静态的 HTML 页面到服务器,然后打开这些静态页面,看一些这些页面的 TTFB 时间,大多数服务器的 TTFB 时间都在 50 ms 以下,这个时间就是我们优化时候可以追求的时间。下面两个图中的 TTFB 时间分别是本站所在服务器的静态和动态网页 TTFB 等待时间

1静态网页 Waiting (TTFB)时间

2动态网页 Waiting (TTFB)时间

根据我们的测试,TTFB 时间如果超过了 500 ms,用户在打开网页的时候就会感觉到明显的等待。我么可以把 500 ms 以上认为是 TTFB 时间过长。可见,WordPress 智库的服务器还不算差。

标题TTFB 过长的原因
对于动态网页来说,服务器收到用户打开一个页面的请求时,首先要从数据库中读取该页面需要的数据,然后把这些数据传入到模板中,模板渲染后,再返回给用户。由于查询数据和渲染模板需要需要一定的时间,在这个过程没有完成之前,浏览器就一致处于等待接收服务器响应的状态。有些服务的性能比较低,或者优化没做好,这个时间就会比较长。

当然,如果服务器到用户之间的网络不好,(比如,服务器在欧洲,用户在中国,用户打开网页的时候,请求需要跨越千山万水才能达到服务器),服务器接收到用户请求的时间过长,也是导致 TTFB 时间过长的原因。

有时候,页面在用户的浏览器中保存了过多的 Cookie,每次请求,这些 Cookie 都要发送到服务器,服务器都要处理这些 Cookie,这也是导致 TTFB 时间过长的原因之一。

Waiting (TTFB) 时间过长的解决办法
知道了原因,解决办法就显而易见了,那就是缩短服务器响应时间,最简单直接并且有效的办法就是使用缓存,把 PHP 和 MySQL 的执行时间最小化,一些缓存插件可以把 SQL 查询结果缓存起来,把几十次查询结果转换为几次;一些缓存插件可以直接把用户所请求的页面静态化,用户打开网页时,相当于直接从服务器上下载了静态页面。

如果是网络原因,换一个服务器是比较直接的解决办法。如果因为一些原因不能换服务器,可以使用一个 CDN,把页面同步到离用户比较近的 CDN 节点上,也是一个不错的解决办法。

如果是 Cookie 的原因,可以通过修改应用程序,删除一些不必要的 Cookie,或者精简 Cookie 内容,缩短 Cookie 的有效期等,都是解决办法。

本站使用的是 Cachify 插件 Memcached 缓存方式,直接把用户请求过的页面,缓存到了内存中,网站加载 Waiting (TTFB) 时间达到了 50 ms 左右,感兴趣的朋友可以用谷歌浏览器的调试工具查看一下。

摘自网页2
导致TTFB的时间过长过长的因素主要是网络、软件、硬件三大块导致的,网络这块就是带宽、线路和网络配置;软件这块也能影响TTFB值,但是一般情况,软件的可能性不大,也就检查一下Nginx、Apache、IIS等等这些环境软件,还有我们本身布置的程序;还有硬件问题,就是配置过低处理起来非常慢。

解决TTFB的方法有哪些:
1、修改DNS,国内的修改为114.114.114.114,国外的修改为8.8.8.8、8.8.4.4或1.1.1.1。
2、服务器升级带宽
3、选择线路好的服务器
4、升级服务器配置(一般是那些512内存的,最好升级一下)
5、数据库使用本地数据库
6、数据库连接时使用IP,舍弃localhost习惯,改用127.0.0.1
7、缓存动态网页
8、还有可能是服务器被攻击导致缓慢,更换高防服务器吧

摘自网页3
TTFB-首字节时间,是指从客户端开始和服务端交互到服务端开始向客户端浏览器传输数据的时间(包括DNS、socket连接和请求响应时间),是能够反映服务端响应速度的重要指标,获取在接收到响应的首字节前花费的毫秒数。
lTime = Response.TTFB
返回值 lTime As Long:首字节响应时间(以毫秒为单位)。
TTFB:httpwatch的timechart中的一列参数。

如何优化网页首字节时间
1:
看一下详情分析页面。
DNS解析:如果是 DNS 解析时间太长,那是你的域名解析服务器不好,请更换靠谱的 NS 服务器。
初始化连接:如果是初始化连接的时间太长,那是你机房的网络不好,请更换更好的机房
如果上面两个都不是。那就是你的代码性能不好,代码执行消耗的时间太长。请优化代码,或者更换更好的机器。
2:
客户端t1时刻发起对于某个url的请求,经过DNS解析获取相应的IP地址后,发起对该IP地址的socket连接,在完成三次握手建立tcp连接后,客户端发送http请求信息,服务端收到请求后返回响应的内容,当客户端在t2时刻收到服务端返回内容的第一个字节,则第一字节时间=t2-t1。 第一字节的时间= DNS解析的时间+socket三次握手时间+http请求时间+第一字节返回的时间。 首字节的时间是0,说明很快呀。不需要做优化。

如何测量TTFB

您可以通过多种不同的方式来测量TTFB,包括使用实验室和现场工具。这意味着模拟结果(实验室)和使用真实用户数据(现场)的测试。但是,在此之前,先了解什么是好分数是有帮助的。

通常,有利的TTFB介于200毫秒 (ms) 和500毫秒(0.2到0.5秒)之间。当然,数字越小越好。任何超过600毫秒的值都被认为是低分。由于谷歌引入了页面速度作为排名考虑因素,许多网站的拍摄时间都在 100 毫秒以下。然而,在大多数情况下,低于 200 毫秒的任何东西仍然被认为是“好”的。

您可以使用多种工具来测量TTFB。让我们来看看一些最佳选择。

WebPageTest

WebPageTest是一种在线工具,可让您快速轻松地测试页面速度。但是,您也可以使用它来访问包含关键指标(包括TTFB)的详细报告。

要使用它,您只需在文本字段中输入您的URL,然后单击“Start Test”按钮:

在结果页面上,您可以查看有关您网站的大量信息。在顶部,您可以找到TTFB的一般分数。在以下部分中,您可以在First Byte列下找到以毫秒为单位的时间:

根据WebPageTest,目标是域名服务器 (DNS)、套接字和安全套接字层 (SSL)协商所需的时间加上100毫秒。TTFB每增加100毫秒,在线工具就会将您网站的分数降低一个字母等级。

GTmetrix

GTmetrix是另一个免费的在线工具,可用于测量TTFB。您可以在文本字段中输入您的网站URL,然后单击测试您的站点按钮:

该工具完成对您的URL的分析后,将显示性能报告,其中包括总体成绩以及您的Web Vitals:

在页面的更下方,您可以单击“Performance”选项卡:

在浏览器计时部分下,您可以找到TTFB。

这些只是您可以使用的在线测试工具的两个示例。其他流行的选项包括Bytecheck、Pingdom和KeyCDN等网站速度在线测试工具。它们都以与这两个选项类似的方式工作。粘贴URL,实时运行测试,然后解析结果报告。

谷歌浏览器开发者工具

另一种测量TTFB的方法是Chrome DevTools。如果您是Chrome用户,则可以使用此方法直接在浏览器中测量TTFB,而无需使用第三方工具。我们上面提到的许多速度测试都使用您可以选择的各种服务器位置,这样,它就直接来自您。

因此,请记住您的特定网络条件和网络延迟会影响 TTFB。因此,您在使用此方法时看到的结果可能与您网站访问者的体验不同。

首先,在浏览器中访问您的WordPress网站,然后导航到屏幕右上角的三个垂直点。接下来,导航到更多工具 > 开发人员工具。这将打开 DevTools 控制台。

从那里,单击页面上的任何元素,然后选择Network选项卡,然后选择Waterfall列:

在列表中,选择要检查的项目。在面板下,您可以找到等待(TTFB)。

如何减少WordPress网站上的TTFB

现在您对TTFB是什么以及如何衡量它有了更多的了解,现在是时候看看您可以做些什么来改进它了。以下是您可以用来减少WordPress网站上的TTFB的四个关键技巧。

1. 升级WordPress主机

也许TTFB中最有影响力的因素是您网站的托管服务提供商。您可以以各种可能的方式优化您的网站,但如果您的主机跟不上,也没关系。该主机的类型使用会影响您的网站的速度和性能。例如,如果您使用共享主机,您可能只能访问有限的资源。并且您对服务器集群的带宽和处理使用情况上的其他用户感到感激。

因此,如果您遇到加载速度缓慢的问题并希望减少TTFB,您可能需要考虑升级到新的托管服务提供商或更高性能的计划。如果您使用共享主机,将您的计划升级到更高级别通常会提供优先服务和更快的服务器。

此外,WordPress网站的托管托管对TTFB来说是一个巨大的好处。这些服务专为WordPress网站设计和优化,这意味着用户端和后端管理的快速响应时间。

更高层和/或托管托管比经济托管带来更高的成本,但没有比卓越托管更好的方法来获得更低的TTFB(和整体页面速度)。

我们还建议您寻找提供优质DNS服务的网络主机。DNS查找时间可能会导致TTFB变慢。利用高级DNS工具可以帮助减少网络延迟,进而缩短加载时间。

2. 使用内容交付网络 (CDN)

提高站点速度和减少TTFB的最有效方法之一是实施CDN。如果您不熟悉这个概念,这是一个分布在全球各地的分布式服务器网络。这意味着您的访问者可以从离他们最近的数据中心位置加载您的站点,从而最大限度地减少所需的时间。

WordPress有许多不同的CDN服务可供您选择。国外一些最受欢迎的选项包括Google Cloud CDN、KeyCDN和Cloudflare(国内在有阿里云CDN、腾讯云CDN或者又拍云CDN等)。事实上,国外一些主机还提供免费版本的Cloudflare CDN。

在您的WordPress站点上使用CDN可以帮助您显着减少网络延迟。除了性能目的之外,CDN还可以通过防止分布式拒绝服务 (DDoS) 攻击等威胁来帮助增强站点的安全性。

3. 删除任何不必要的插件或主题(并保持更新现有的)

插件和主题可能会占用大量空间,甚至会减慢您的网站速度,尤其是当它们已经过时时。此外,旧的扩展可能会引入安全漏洞并对您的服务器和加载时间造成不必要的压力。它们可能没有被优化,因为它们的代码而延迟了你的TTFB。确保您的插件已更新且必要。减少插件的数量肯定会改善您的 TTFB,如果它们使您的站点服务器陷入困境。

删除WordPress 网站上不再使用的任何插件或主题很容易。同样,确保您在站点上安装的那些保持更新也很重要。如果他们的代码没有得到尽可能好的优化(尤其是 WP 更新等),TTFB可能会受到打击。

在您的WordPress管理仪表板中,您可以通过导航到插件找到可用的插件更新,然后单击可用更新链接:

请记住,插件和主题开发人员会定期发布其工具的性能改进和错误修复。掌握最新版本并消除任何不再有用的版本可以帮助您最大程度地减少服务器膨胀。

4. 在您​​的网站上实施缓存

减少服务器负载的最有效方法之一是利用缓存。缓存是一种用于帮助最小化服务器处理时间并更快地交付内容的技术。因此,这也是一种有助于减少首字节时间TTFB的有用策略。

您可以在您的网站上安装各种WordPress缓存插件。一些最受欢迎的选项包括WP Rocket和W3 Total Cache。

W3 Total Cache是一种性能优化工具,可以帮助您提高网站的速度和SEO。它还可以帮助CDN集成。因此,在这方面,您可以通过多种方式帮助TTFB。安装后,您可以通过导航到Performance来访问设置。

这个插件可以免费使用。但是,如果您正在寻找更高级的配置选项,则可以使用每年99美元的专业版许可证。

首字节时间 (TTFB) 常见问题

到目前为止,您希望对TTFB的重要性、如何衡量它以及如何减少它有一个深入的了解。现在,让我们来看看有关此指标的一些最常见问题。

TTFB如何影响网站的整体性能?

TTFB是指访问者到达您的网站与他们的浏览器从您的服务器接收到首字节之间的时间。换句话说,它衡量您的服务器对用户的响应。这意味着没有可接受的(阅读:低)TTFB,您网站的其余部分加载缓慢。

即使您网站的内容在1秒内完全加载,如果TTFB为4秒(4000 毫秒),则总加载时间约为5秒。

因此,TTFB在您的UX和SEO中起着至关重要的作用。在考虑如何对您的网站进行排名时,Google将TTFB视为关键数据点。您对TTFB所做的任何优化都会直接影响其他页面速度指标,例如FCP和LCP。

减少TTFB的最佳方法是什么?

没有一种单一的解决方案可以减少您的TTFB。由于主要目标是减少服务器响应时间,我们建议使用我们上面讨论的方法的组合。首先,确保您拥有性能出色的可靠托管服务提供商。然后,在您的站点上实施CDN和缓存系统,更新您的插件,并删除任何可能会延迟您的站点快速发送响应的不必要的附加组件。

TTFB并不总是基于拥有轻量级站点,但拥有轻量级站点仍然可以快速返回首字节。

小结

如果您想为网站访问者提供高质量的体验,服务器响应能力很重要。如果您的网站响应时间过长,则会增加他们放弃您网站的机会。即使您的内容加载速度很快,如果开始加载需要几秒钟,用户也可能会离开。为了防止这种情况发生,重要的是注意您的TTFB并采取措施将其保持在尽可能低的水平。

 

关于作者: asdfghjkl

为您推荐

发表回复