文将来探讨什么是TTFB?导致TTFB缓慢的原因有哪些?首字节时间 (TTFB)是一个比较重要的指标。如果你正在寻找有效降低网站和服务器 TTFB 时间的办法,本文能给你提供一些有价值的方向和思路。Google的建议以及如何降低TTFB时间以使你的网站加载速度更快。

什么是 TTFB(首字节时间)?

TTFB全称:Time to First Byte。等什么呢?除了等待服务器传递响应所花费的时间之外,还包括到服务器往返的延迟。

指的是从访客发出 HTTP 请求(如打开域名)到用户的浏览器接收到第一个字节之间的时间。这个过程大体是这样的:访客发出访问请求,从域名解析定位到CDN节点,或主机服务器。读取网站数据再返回到用户浏览器中,直到看到页面内容加载。

简而言之,TTFB 是从你打开网页开始到页面呈现那一刻的时间,顾名思义就是一段“等待”的时间。

下面是服务器的动作:WordPress 这类的内容管理系统 (CMS),服务器要执行页面的所有静态(文字、图片、视频)、动态内容(php文件、数据库),其中比较耗费时间的是 php计算和读取数据库。PHP 服务加载网站 MySQL 数据库、获取内容、计算出 HTML 输出并将其返回给网站访问者。

TTFB时间由三个部分组成:

1、发送HTTP请求的时间

TTFB 从访客发送 HTTP 请求开始,服务器接收请求的时间主要在于查找 DNS 的时间、用户网络速度、和服务器之间的地理距离以及连接中可能的中断。

2、处理请求的时间

服务器收到请求后,会处理请求并响应。包括启动php进程、进数据库搜索调用、运行js脚本、css样式表及与其他网络系统通信。

3、服务器将响应的第一个字节发送回浏览器所需的时间

服务器将响应发送给用户。取决于服务器和用户的网络速度。

上述这些步骤都需要时间,如果优化的不好好那么网站的 TTFB 就会非常高,比如超过10秒或更长时间。

说向服务器发送请求、处理请求并把处理好的数据发送回用户浏览器所需的时间越长,显示网页需要的时间就越长,我们称之为 TTFB过大,需要进行优化。

但不一定是主机慢,也有可能是安装了太多的插件(我见过安装50+插件的,还有更多的说一下),没用缓存系统,使用了性能低下的 PHP5.6 版本(特殊情况除外)。

我们管不了用户那头,只能想办法优化服务器端和 CDN部分(管好自己)。

TTFB 多大算正常?

Google 建议 TTFB 低于 200 ms。Lighthouse 认为请求超过 600 毫秒就不合格。

如果 TTFB 超过 1秒甚至更大,那就代表服务器存在一些性能瓶颈,需要查找问题所在并优化。

如图所示,魏艾斯笔记的 TTFB 大约在 500ms多。

魏艾斯笔记的 TTFB 大约在 500ms多

测量 TTFB数值

一般可以用 Gtmetrix网站来测试你网站的 TTFB数值,并作为参考使用。

感兴趣请看GTmetrix网站性能测试详细介绍,了解具体测试方法。

很多国外网站都可以测试 TTFB数值,知道有这回事就行了。

导致 TTFB 高的原因

WordPress 网站有多个因素会影响第一个字节的时间:DNS 响应时间、网络延迟、服务器配置和性能、动态内容。

我们用下面 9种方法在 WordPress 中降低 TTFB (首字节时间)。

使用快速的网络主机

使用稳定、快速的主机服务器,会大大降低 TTFB。

比如魏艾斯笔记的大部分访问都在国内,那么就选择了腾讯云服务器作为网站基础平台。

选择访客较多的主机节点,物理位置更靠近用户所在地,会有效降低 TTFB。

另外国内还可以选择阿里云服务器,同样具备优秀的素质。

而外贸网站、跨境电商网站的大多数用户位于美国,那么建议把网站托管在美国节点。如果大多数用户在欧洲,那就托管在欧洲节点。如果美国、欧洲客户都有,那还是放到美国节点。

外贸B2B网站、跨境电商网站建议选择 Siteground、Hostinger虚拟主机等平台。2C网站建议选择 Vultr主机建站。

主机服务器非常重要,这是建站的基石。基石如果不稳定、性能差,你再怎么优化也会事倍功半。

使用 CDN

使用 CDN可以帮助网站通过遍布全球的缓存服务器节点,更快地将网站静态内容发送给用户。

比如你的主机放在美国主机上,当欧洲用户访问时,他们将从比较近的荷兰阿姆斯特丹 CDN 节点缓存服务器中调用网站内容,而无需去你美国主机中访问,这样就节省了欧洲到美国的来回时间。有效降低了网站主机和访问者之间的网络延迟。

更多内容请看云服务器还用 CDN加速吗?什么网站要用CDN?

高级 DNS 服务

普通的 DNS 不提供高级 DNS功能,也就是说域名商提供的 DNS服务是免费的,而付费 DNS套餐可以提供更多台 DNS解析器节点,让DNS解析更快。好的 DNS 提供商会使用遍布全球的 DNS 服务器网络以低延迟回答 DNS 查询,减少 TTFB。

魏艾斯笔记购买了腾讯云DNS解析套餐,比普通的免费 DNS解析要更快应答访问请求。

感兴趣请移步DNS 解析和 CDN 加速的区别与联系。

开启缓存

降低 TTFB 的简单方法是网站中添加缓存。缓存能减少服务器处理时间来帮助减少 TTFB。

对于服务器来说,启用 memcached 或 redis 是必须的。对于虚拟主机来说,安装一款 WordPress 缓存插件就可以了。

开启 GZIP 压缩

开启 GZIP 压缩后,大大减小 HTML、CSS 和 JS 文件大小,下载页面资源会更快,降低 TTFB。

云服务器使用宝塔面板建站, 宝塔面板默认启用 GZIP 压缩。

国外虚拟主机都默认支持 GZIP,不需要我们操心。

不知道自己的主机是否支持 Gzip?请看检测网页Gzip压缩是否成功的多种方法。

优化数据库

常见的数据库垃圾,比如文章修订版本、已删除和垃圾评论以及插件创建的临时文件等,都会影响服务器响应时间。

强烈建议定期优化数据库大小和进行清理垃圾工作。

减少数据库查询

网站从数据库查询数据的数量可能会导致浏览器 Waiting 时间长 。为了定位数据库查询瓶颈,可以尝试安装 Query Monitor 插件,或考虑使用功能更强大的工具(例如New Relic)。

后者将帮助你找到最耗时或查询时间最慢的数据库查询,以便你揪出究竟是哪些插件,主题或设置正在影响网站的速度。

总结

在网站上使用上述方法后,能有效降低和改善 TTFB,给网站性能带来巨大提升。

网站打开速度快了,访客体验就得到了有效改善,这是我们的终极目标。