网站加载过程中Waiting(TTFB)时间过长的解决过程

2018-06-19T11:46:00

最近发现博客访问速度变慢了,查看了下控制台发现所有静态资源的加载都保持在200ms以内,只有第一项 document 的时间达到了6.65s,点开一看原来是一个名为 Waiting(TTFB) 的东西占据着主要的加载时间。具体控制台的显示内容如下:

那么 Waiting(TTFB) 是什么呢?

TTFB 全称 Time To First Byte,是指网络请求被发起到从服务器接收到第一个字节的这段时间,它包含了 TCP 连接时间、发送 HTTP 请求时间和获得响应消息第一个字节的时间。

如果不是服务器的的问题,那基本上可以确定是我这几天折腾博客造成的结果。由于最近几天测试了不少插件、添加了不少功能代码,具体是什么原因导致博客加载变慢我也不知道,没办法只能从头开始测试。

  • 停用所有插件,启用默认主题。速度上去了,说明是主题或者插件的原因;
  • 启用默认主题,逐一测试插件,速度基本不变,说明插件没有问题;
  • 停用所有插件,启用 DUX 主题,速度慢下来了,说明主题有问题?
  • 备份主题,后台删除 DUX 重新安装主题,速度上去了,说明原版 DUX 主题没问题,我自己折腾的东西有问题。

接下来就重点分析我所折腾的东西。JS、CSS、图片等静态文件我都是使用的七牛云镜像存储,查看控制台也没有什么异常,对于主题的个性化修改也就只剩下 functions.php 这个文件了。恢复之前自己折腾的主题文件备份,然后替换原版主题的 functions.php 文件,网站速度上去了,这也进一步说明了网站加载过程中 Waiting(TTFB) 时间过长就是这个文件造成的。

我分别将添加的功能函数一个个重新添加并检测网站页面访问速度,具体历程就不详述了,最后终于发现原来是下面这段代码搞得鬼:

  1. //网站链接自动转换为英文
  2. function qgg_translate_cn_post_title_to_en( $title ) {
  3.     $translation_render = 'http://fanyi.baidu.com/v2transapi?from=zh&to=en&transtype=realtime&simple_means_flag=3&query='.$title;
  4.     $wp_http_get = wp_safe_remote_get( $translation_render );
  5.   if ( emptyempty$wp_http_get->errors ) ) {
  6.       if ( ! emptyempty$wp_http_get['body'] ) ) {
  7.           $trans_result = json_decode( $wp_http_get['body'], true );
  8.           $trans_title = $trans_result['trans_result']['data'][0]['dst'];
  9.           return $trans_title;
  10.         }
  11.     }
  12.     return $title;
  13. }
  14. add_filter( 'sanitize_title', 'qgg_translate_cn_post_title_to_en', 1 );

这段代码是我为了方便在编辑文章时通过百度翻译将文章别名自动翻译成英文添加的,简单地看了下,代码方面应该是没有什么大问题,主要应该是网站加载时需要请求百度翻译导致加载变慢,移除这段代码后再次刷新网站页面,一切正常!查看控制台如下所示:

虽然网页加载还不是特别快,但是也算是维持在了2s以内了,问题得到解决。

 

via.https://boke112.com/4496.html

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »
因本文不是用Markdown格式的编辑器书写的,转换的页面可能不符合MIP标准。