WordPress性能优化经验分享

最近从Hexo转回了WordPress,但是发现无论是网站的打开速度,还是后台随便打开一个设置,速度都是非常的慢,打开首页可能需要5-7秒,点击任意文章稍微就快一点,大概是3-5秒,但是有时候可能打开首页甚至需要一分多钟才能加载出来。

这样的速度完全不能接受啊,这样还能愉快的玩耍吗?

首先我们需要分析一下WordPress为什么会变得这么慢的原因,通常情况下,各类文章给出的建议都是禁用谷歌字体,这是一个不错的思路,但是我在禁用之后发现整个网站的速度仅有一点点的提升,整个网站的加载速度仍然不可接受。

工具使用

在如下的优化过程中,你可能需要如下的一些工具来完成优化过程。

Chrome + FireFox 浏览器 的开发者工具,即F12查看网络加载详情
Xshell 用于连接服务器修改配置文件等,若你的网站使用虚拟主机,则无法使用该工具
Google搜索引擎 | 百度搜索引擎 用于查询下面的优化中具体的内容及配置方案

插件说明

那么如何改善呢,首先我上一下目前这个博客所使用的一些插件。

Accelerated Mobile Pages
Autoptimize
EWWW Image Optimizer
QQWorld加速中国版
wp super cache

Accelerated Mobile Pages

首先从Accelerated Mobile Pages说起,这个插件是会将网站的移动端内容转换为支持amp的内容,加载速度提升非常大,因为在默认的情况下,我们的wordpress网站是使用自适应的主题,会加载一些不必要的css和js文件在移动端页面,使用了这个插件后,它会自动的检测你所使用的设备,如果是移动设备则跳转到amp页面,每个amp页面的大小约十几KB左右,相比自适应的页面大小优势很大。

Autoptimize

这个插件通常我建议在优化完整个站点后再使用,通常情况下我们的网站会加载一些小的js和css文件,这些文件会增加页面的请求数量,导致速度变慢,这个插件可以将小的js与css文件以及页面内的css与js内容压缩成一个或两个css文件或js文件,减少了用户的请求数量,提升网站的加载速度。

EWWW Image Optimizer

说到网站,几乎目前绝大多数的网站都会在文章中使用图片来提升网站的页面效果,或者是增加一些亮点,目前我们手机拍摄出来的照片都有几M大小,相比之下我们的服务器带宽可能仅有1-3M左右的带宽,这样的情况下,再去加载一个动辄几M大小的图片,甚至十几张这样的图片,整个网站的速度就会变得非常慢,体验也不好。因此这个插件可以在我们上传图片的时候,自动的压缩图片,通常可以将图片从几M压缩到几百KB甚至几十KB,这样整个网站的速度就提升很多了。

QQWorld加速中国版

这个插件可以替换网站内的google字体链接,由于某些原因我们无法正常访问谷歌的字体服务器,但是大多数Wordpress主题和wordpress本身引用了谷歌字体,因此每次点击网站的时候都会去请求谷歌服务器拿到字体文件,这样整个网站的速度就会很慢,因为需要等待字体的加载,使用这个插件可以将网站内包含谷歌字体的链接替换为国内的字体源。

wp super cache

这个插件可以缓存页面,通常情况下我们的页面不会有太多的变动,因此我们可以将其缓存起来,大多数用户访问的时候就不需要再让php执行脚本查询数据库再生成页面返回给用户了,因此这个插件几乎可以说是必装的,注意!个人不建议使用w3 total cache这个插件,实测该插件缓存页面后加载速度与wp supercache速度差距较大,因此建议直接使用wp super cache缓存页面即可。

服务器优化

此处内容仅做介绍,有关详细配置方式可以使用Google或者百度搜索具体解决方案。

php优化

php的速度通常较慢,因为它是动态类型的语言,但是我们可以配置来提升一些性能。

设置如下内容的配置

Opcache
HugePage
Opcache file cache

使用Niginx并优化

Nginx的性能相比Apache的性能要好,因此我们应该使用Nginx来作为我们的HTTP服务器,并且我们可以修改Nginx的配置文件以提升性能。

Gzip打开

我们的页面通常会有空格,以及其他的一些内容,这些东西我们其实可以在响应用户的请求时进行压缩,我们可以直接使用Gzip来对响应内容进行压缩,以提升网站的加载性能。

内核参数的优化

Linux的默认内核参数通常足够我们使用,但是这可能不足以支持一个站点的访问数,因此我们可以配置内核参数来提升网络性能等,有关此处内容可以参考我的安装ss的文章,其中优化ss的内容就是修改内核参数的方法,照做即可。

添加缓存服务器

如果你的服务器性能较好的话,可以添加缓存服务器来缓存例如页面,数据库查询,用户请求等,提升整个站点的速度。

CDN支持

使用CDN技术提升站点的速度

主题优化

大多数主题会使用如bootstrap,Jquery等js库或框架,这些文件通常会放在我们的服务器上,用户请求页面时会从我们的服务器上加载,但这些其实完全是没有任何必要的!因为这些文件都是通用的,大多数的网站都会使用这些文件,那么为什么还需要从我们自己的服务器上加载呢?因此我们可以编辑主题文件,将其中的js和css引用修改为例如国内的cdn路径,例如我需要修改主题的bootstrap文件路径从我的服务器上引用改为使用cdn上的bootstrap文件,那么我就可以打开主题加载js和css的文件,找到其中的引用链接,将其修改。当然你也可以直接使用国内开发者提供的主题,他们的主题通常不会直接引用谷歌字体。

示例:

原主题引用文件方式

使用cdn来加载

一些速度不错的CDN推荐,直接打开然后搜索你需要的框架js文件即可
https://www.staticfile.org/
http://jscdn.upai.com/
http://www.bootcdn.cn/
https://cdnjs.com/

图片CDN

网站的内容若是倾向于多图片的形式,那么使用图片CDN就必不可少,有关这方面的内容,可以使用类似如下服务提供商的CDN服务来加载图片

腾讯云
阿里云
又拍云
七牛云

图床

像图片CDN这些,通常是需要支付一定的费用,但是大多数站长可能网站并未能盈利,但是又需要提升网站的加载速度,那么应该怎么解决呢?我们可以使用图床来解决网站的图片问题,例如我需要在首页设置背景图,但是这个图片放在服务器上面的话加载很慢,这时候就可以将图片放在图床上,然后在主题设置中设置图片在图床上的链接即可。
目前我使用的是新浪微博的相册图床,优点是加载速度较快且免费,缺点是上传后会对图片进行一定量的压缩,可能不支持某些透明的图片,而且使用的过程比较繁琐。

推荐图床:

新浪微博相册
极简图床
七牛云

结语

经过如上的一番折腾,本网站的加载速度从之前的7秒左右甚至更久提升到了目前的300毫秒到500毫秒即可完成页面的加载,这中间的折腾不可谓不费劲。当然如果博客后续可以盈利的话,会考虑将所有的静态资源放在付费的CDN上,这样的话整个网站的加载速度就能从300-500毫秒提升到100毫秒内,接近于大型网站的加载速度了。