WordPress网站加载WAITING(TTFB)时间过长解决办法

WordPress 刚刚安装的时候,性能是没问题的,我们安装了主题、插件、添加了一些小工具和菜单,然后我们就开始上传内容了,我们都很勤快

Waiting (TTFB) 时间

Time to First Byte 指的是浏览器开始收到服务器响应数据的时间(后台处理时间+重定向时间),是反映服务端响应速度的重要指标。

TTFB 时间多长算长

下面两个图中的 TTFB 时间分别是本站所在服务器的静态和动态网页 TTFB 等待时间。

根据测试,TTFB 时间如果超过了 500 ms,用户在打开网页的时候就会感觉到明显的等待。把 500 ms 以上认为是 TTFB 时间过长。

WordPress网站加载WAITING(TTFB)时间过长解决办法插图1
WordPress网站加载WAITING(TTFB)时间过长解决办法插图3

TTFB 过长的原因

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

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

页面在用户的浏览器中保存了过多的 Cookie,每次请求,这些 Cookie 都要发送到服务器,服务器都要处理这些 Cookie。

Waiting (TTFB) 时间过长的解决办法

缩短服务器响应时间:使用缓存,把 PHP 和 MySQL 的执行时间最小化。

如果是网络原因,换服务器是比较直接。或者使用CDN服务。

如果是 Cookie 的原因,可以通过修改应用程序,删除或精简Cookie内容,缩短有效期等。

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

Cachify 缓存插件描述

Cachify 通过将文章,页面和存档页面缓存为静态内容来优化页面加载。我们可以根据需要选择把静态内容缓存到 WordPress 数据库,硬盘,APC(PHP 缓存)或者 Memcached 中。用户再次访问页面时,直接从缓存中读取页面给用户,不用再查询数据库了。都知道,应用程序的性能瓶颈在数据库,我们把数据库查询降低到了 0,你说速度快不快?Cachify 插件只会缓存用户访问过的页面,长时间没有用户再次访问的页面,Cachify 会从缓存中把这个页面清除掉,确保缓存高效。

Cachify 缓存插件的特性

适用于自定义文章类型。

缓存方法:DB,HDD,APC 和 Memcached。

通过 WordPress 工具栏中的 刷新缓存 按钮删除缓存。

支持 WordPress 多站点。

可以选择压缩 HTML 或 JavaScript。

可以为用户浏览器和文章设置不缓存。

手动和自动删除缓存。

自动缓存管理。

可以查看缓存状态的仪表板小部件。

Apache 和 Nginx 服务器的设置。

通过钩子/过滤器扩展插件。

配合 Nginx 使用 Memcached 缓存 WordPress 页面

虽然 Cachify 也可以把页面缓存到数据库和硬盘中,但是我们不屑使用这些折衷的方式,毕竟服务器上除了 CPU,速度最快的就是内存,我们要的就是快、快、快。首先服务器使用的是 Nginx,然后服务器上安装了 Memcached 服务,确保这两个条件满足之后,安装并启用 Cacify 插件,在站点的 Nginx 配置文件中添加以下配置,重启 Nginx,

关于配置这里注意报错:

nginx: [emerg] “location” 指令在 /www/server/nginx/conf/nginx.conf:102 中是不允许的

nginx:配置文件/www/server/nginx/conf/nginx.conf 测试失败
WordPress网站加载WAITING(TTFB)时间过长解决办法插图5

“location”指令应该在server指令中,例如

server{listen8765;location/{resolver8.8.8.8;proxy_passhttp://$http_host$uri$is_args$args; }error_page500 502 503 504 /50x.html;location=/50x.html {roothtml; 在server内 粘贴进来 }}

然后在 WordPress 仪表盘的 Cachify 设置中,选择缓存方式为 Memcached,如下图,设置缓存时间,和缓存生成的时机(对登录用户不缓存、用户发表评论时清理缓存)。

WordPress网站加载WAITING(TTFB)时间过长解决办法插图7

然后退出后台,在前台刷新几下页面试试。不用看详细的参数,我们就可以发现,页面打开一次后,再次打开这个页面的速度刷刷的。有些朋友可能说是这浏览器缓存的问题,好,那我们打开调试模式,清理掉缓存再试试,看看具体的参数,快了多少相信是很明显的。

有朋友可能会有个疑问,如果都把内容缓存到了内存里面,内存会不会被撑爆?大家可以想象一下,内存里面缓存的其实都是页面的代码(不包括图片、视频这些多媒体),一个页面的代码能有多大?撑死 1M,1G 的内容能够缓存多少页面、大家可以计算一下。如果你的服务器的内存实在太小(比如128M),我只有劝你增加服务器内存了,毕竟,咱们做互联网的,再穷不能穷网站。

原创文章 WordPress网站加载WAITING(TTFB)时间过长解决办法,版权所有
如若转载,请注明出处:https://www.itxiaozhan.cn/20223407.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注