解决动态网站TTFB(白屏、等待)时间长的问题

作者: Timeless 更新时间: 阅读量: 101

使用ajax请求php数据接口的过程中,发现请求数据响应时间很长,要1秒以上

现将解决问题的步骤记录如下,希望能帮到遇到同样问题的小伙伴

1、使用谷歌chrome浏览器开发者工具(按F12打开),调到Network

QQ截图20180329143010_看图王.jpg

可以发现请求回的数据只有3.5kb,而且后台对数据的处理不算复杂,那为何要响应那么久,其中花费最长时间的是Waiting(TTFB),足足要1秒多。

2、直接转到PHP页面测试,还是同样问题,由于是本地测试可以排除网络传送的影响

QQ截图20180329144126.png

先附上各时间段的意义:

Stalled/Blocking

在请求能够被发出去前的等等时间。包含了用于处理代理的时间。另外,如果有已经建立好的连接,那么这个时间还包括等待已建立连接被复用的时间,这个遵循Chrome对同一源最大6个TCP连接的规则。

「拿我们的情况来说,上面出错所有的耗时也是算在了这部分里面。网络面板中显示的其余时间比如DNS查找,连接建立等都是属于最后那次成功请求的了」

Proxy Negotiation

处理代理的时间。

DNS Lookup

查找DNS的时间。页面上每个新的域都需要一次完整的寻路来完成DNS查找。

Initial Connection / Connecting

用于建立链接的时间,包括TCP握手及多次尝试握手,还有处理SSL。

SSL

完成SSL握手的时间。

Request Sent / Sending

发起请求的时间,通常小到可以忽略。

Waiting (TTFB)

等待响应的时间,具体来说是等待返回首个字节的时间。包含了与服务器之间一个来回响应的时间和等待首个字节被返回的时间。

Content Download / Downloading

用于下载响应的时间


3、为了排除是不是PHP后台程序的问题,我请求一个空的php文件,发现只要1.27毫秒,可以确定是php程序的问题了

QQ截图20180329144912.jpg

4、通过最小系统法排除确定,等待的时间都花在与mysql数据库的连接

我的连接数据库配置文件里面host是 localhost ,把localhost改为 127.0.0.1 即可解决问题


因为127.0.0.1无需解析,localhost还要本地DNS解析,所有127.0.0.1会更快