很多 WordPress 使用者会觉得 WordPress 的性能不好,打开速度很慢,具体表现为、打开一个后端或前端页面时,加载了很长时间,页面才显示出来。懂点网页调试的朋友如果打开谷歌浏览器调试工具看网络瀑布流,会发现,页面的 Waiting (TTFB) 参数很长,有些甚至到达了 1000 ms 以上。导致WordPress 页面加载速度慢的原因有很多,今天一刀为大家逐一分析一下。
首先、打开一个网站需要经过下面几步(下面简称为 5 步骤):
- 用户在浏览器里面输入网站域名、DNS 服务器解析网站域名为服务器 IP 地址
- 浏览器代替我们向服务器请求页面,Nginx 服务器接收到浏览器的请求之后,把请求转发给服务器上的 PHP 程序。
- PHP 执行页面代码,从 MySQL 服务器中读取数据,再拼接成 HTML 网页、返回给 Nginx 服务器
- Nginx 服务器接收到 PHP 返回的 HTML 页面后,再转发给浏览器。
- 浏览器接收到服务器返回的 HTML 后,读取 HTML 页面的内容、获取加载 HTML 内容中的资源,根据 HTML 页面的 HTML 标记、CSS、JavaScript 代码把网页渲染成我们看到的页面。
这么多步骤、每一步出了问题,都会导致网页的打开渲染速度变慢,如果有多个步骤都有问题、打开速度就会变得更慢,直到我们受不了了,决定优化一下页面的打开速度。
要优化页面打开速度,我们首先得找到导致 WordPress 打开速度慢的原因,对症下药、否则,任何的优化都起不到药到病除的作用,有些甚至还会产生副作用,导致打开速度更慢。下面我们来看一下每一步可能产生的问题一下解决办法。
1、网络连接速度或服务器带宽原因
网络原因也就是大家经常说的网速慢,在提速降费政策的影响下,现在客户端(也就是及的电脑或手机)的网速一般不会很慢了,这里说的网速慢主要是服务器网速慢。
比如服务器在美国,我们在中国访问,数据要漂洋过海两次才能跑一个来回,速度自然慢了。
再比如,有些网站用的服务器是 1M 的小水管带宽,下载一个 1M 的图片就需要 好几秒了,如果网站图片比较多大情况下,页面的打开速度会让人不由自主的联想到下面的形象。
网络原因会影响到 WordPress 页面打开「 5 步骤中」中的 1、2、4 步。怎么解决网络原因导致的页面打开速度慢的情况呢?一般来说,有下面 3 种方法。
- 更换更近的服务器,服务器近了,数据不用跑太远的路,速度自然就会快些。
- 使用 CDN,可以让我们在不用更换服务器的情况下,把数据放到离我们较劲的服务器上。
- 如果上面两条实施起来都有困难,我们可以优化网页加载的前端资源数量,降低 HTTP 请求数量,WordPress 有一些插件可以做到,当然,如果你懂编程,也可以通过编辑代码实现。
2、服务器配置原因
如果服务器配置比较低,或者网站采用的是共享虚拟主机,会导致分给自己网站运行的服务器资源较少,导致执行一个程序需要的时间比较长。如此一来、网站打开速度自然就慢了。
举个例子:打开网站首页时,PHP 对 MySQL 数据库说,给我分类 ID 为 3、5、7 的前 10篇文章、每篇文章需要包含标题、描述、图片、访问量、发布时间这些数据,给我之前顺便按时间顺序帮我排列一下。要快!100 毫秒之内给我。
结果 MySQL 3 秒后才把这些数据返回给 PHP,这时候 PHP 不爽了:“怎么这么慢?我的上帝要尽快看到这些数据,你为什么就不能麻利点呢?”
MySQL 看了看自己可以用的服务器资源,很委屈的说:“我也想尽快给你,可是我可以用的服务器资源有限,臣妾做不到呀!”
是的,如果服务器资源有限,想要在很短时间内获取数据,生成网页,不但臣妾做不到,皇上也是做不到的。
服务器原因主要会影响 「5 步骤」中的 2、3、4 步,我们可以采取以下措施来解决这个问题:
- 提高服务器配置,如果服务器配置过低,提高服务器配置是最简单的方法
- 使用 WordPress配置存加速 , 合理的使用服务器缓存可以在不提高服务器配置的前提下,提高页面打开速度
3、主题或插件原因
有些高级主题加载的组件特别多,即便我们做一个很简单的网站,也加载了很多我们不需要的代码。极端情况下,有些设计不良的主题或插件甚至会造成程序死循环导致服务器资源耗尽。
如果主题或插件代码没有对较耗资源的 MySQL 查询采用适当的缓存,会导致频繁访问数据库,导致程序处理速度比较慢。
有些插件会加载一些前端资源、可能一个插件只加载一两个 CSS 或 JS,可能如果插件多了,放在一起,会加载十来个前端资源到页面中,对页面渲染速度的影响可想而知了。我见过网站用了 20 多个插件,网站首页加载了 快 30 CSS 和 JS,这么多资源,光下载都得一段时间,更别说下载之后还得渲染了。
这些个原因会影响到「5 步骤」中的 3、5 步
- 更换主题,采用设计优良,精简专注的主题,如果条件允许,可以定制一个主题
- 优化主题代码,检查现有主题代码,看看有那些功能是我们用不到的,想办法禁用掉
- 提高服务器配置,可以运行程序的服务器资源多了,处理速度自然后有有所提高
4、Google 字体和 Gravatar 头像 原因
如果 WordPress 页面中加载了 Goolge 字体,大部分情况下,Google 字体是加载不出来,而浏览器会一直加载下去,看起来好像网站失去了响应一样,其实网站的其他部分早就已经加载好了,就等 Google 网络字体加载好,应用网页字体后,才渲染给我们。
对于中文网站来说,没有这些字体,页面看起来基本上是没有什么区别的,我们把这些字体去掉,网站照样能看,并且速度更快,何乐而不为呢?
如果是在需要这些字体,我们也可以把这些字体替换为国内的镜像资源,这样既保留了字体,也不会影响页面的打开速度,一举两得。
这个原因会影响到「5 步骤」中的步骤 5,解决办法也很简单:
- 我们可以直接禁用掉 Google 字体或 Gravatar 头像
- 可以使用Google Font Fix替换这些资源为国内的镜像