⽹站加载Waiting(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 的有效期等,都是解决办法。
本站使⽤的是 ,直接把⽤户请求过的页⾯,缓存到了内存中,⽹站加载 Waiting (TTFB) 时间达到了 50 ms 左右,感兴趣的朋友可以⽤⾕歌浏览器的调试⼯具查看⼀下。
摘⾃
导致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、还有可能是服务器被攻击导致缓慢,更换⾼防服务器吧
摘⾃
TTFB-⾸字节时间,是指从客户端开始和服务端交互到服务端开始向客户端浏览器传输数据的时间(包括DNS、socket连接和请求响应时间),是能够反映服务端响应速度的重要指标,获取在接收到响应的⾸字节前花费的毫秒数。
lTime = Response.TTFB
返回值 lTime As Long:⾸字节响应时间(以毫秒为单位)。
TTFB:httpwatch的timechart中的⼀列参数。
补充学习:
什么是TTFB呢?
1.TTFB (Time To First Byte),是最初的⽹络请求被发起到从服务器接收到第⼀个字节这段时间,它包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第⼀个字节的时间。
注意:⽹页重定向越多,TTFB越⾼,所以要减少重定向
TTFB优化的⽅法有:
1.减少DNS查询
2.使⽤CDN
3.提早Flush
4.添加周期头
什么是TTSR呢?
2.TTSR(Time to Start Render)
TTSR-开始渲染时间,指某些⾮空元素开始在浏览器显⽰时的时间,这也是⼀项重要指标,即TTSR越短,⽤户越早浏览器中的内容,⼼理上的等待时间会越短。过多的CPU消耗会拖慢TTSR,所以⽹站中有⼤量图⽚和脚本往往会造成不良⽤户体验。
注意
TTSR优化:
1.优化TTFB
2.降低客户端CPU消耗,即页⾯加载初期不要有⼤脚本运⾏,把JS脚本放到页⾯下⽅
3.使⽤效率较⾼的CSS选择器,避免使⽤CSS表达式
4.避免使⽤CSS滤镜
什么是TTDC呢?
3.TTDC(Time to Document Complete)
TTDC-⽂档完成时间,指页⾯结束加载,可供⽤户进⾏操作的时间,等价于浏览器的onload事件触发点。
TTDC是⽐较重要的性能优化对象,TTDC越低,页⾯加载速度越快,⽤户等待时间越短。
注意
TTDC的优化⽅法有:
1.优化TTFB
2.优化TTSR
3.优化⾸屏时间,将不必要的页⾯加载放到onload事件之后
什么是TTFL呢?
4.TTFL(Time to Fully Loaded)
TTFL-完全加载时间,指页⾯在onload之前和onload事件之后额外加载的内容所花费的时间的总和,即页⾯完完全全加载完毕消耗的总时间。
注意
TTFL的优化⽅法:
1.优化TTFB
2.优化TTSR
3.优化TTDC
4.延迟加载
5.异步加载
6.按需加载
如何优化⽹页⾸字节时间
1:
看⼀下详情分析页⾯。
DNS解析:如果是 DNS 解析时间太长,那是你的域名解析服务器不好,请更换靠谱的 NS 服务器。
初始化连接:如果是初始化连接的时间太长,那是你机房的⽹络不好,请更换更好的机房
如果上⾯两个都不是。那就是你的代码性能不好,代码执⾏消耗的时间太长。请优化代码,或者更换更好的机器。
2:
客户端t1时刻发起对于某个url的请求,经过DNS解析获取相应的IP地址后,发起对该IP地址的socket连接,在完成三次握⼿建⽴tcp连接后,客户端发送http请求信息,服务端收到请求后返回响应的内容,当客户端在t2时刻收到服务端返回内容的第⼀个字节,则第⼀字节时间=t2-t1。 第⼀字节的时间= DNS解析的时间+socket三次握⼿时间+http请求时间+第⼀字节返回的时间。 ⾸字节的时间是0,说明很快呀。不需要做优化。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论