自写博客以来,本人一直用WordPress做建站程序。肯定有人会问,都2020年了,为什么还用WordPress,不用Hexo、Jekyll、Github Pages、Medium呢?主要是WordPress的主题/插件系统太牛逼,生态非常完善,远超其他建站程序。此外开发者、用户众多,许多想要的功能,点点鼠标装上插件就实现了,小白高手都能用得很舒服。

用了这么久的WordPress,对WordPress的性能优化也有了不少的经验。目前本站峰值PV 3万,峰值IP 1.6万,alexa排名大概15-18万之间,运行在阿里云1核2G 峰值100m带宽的t5突发性能实例上,平均cpu使用率在10%以下,内存占用基本不超过1G,非常平稳:

阿里云监控信息

一直用这么低配的机器跑访问量过万的网站,底气来源于本人对WordPress和服务器做了如下优化:

1. 运行最新版的操作系统及软件。最新版的操作系统、软件不仅修复安全bug,还有明显的性能提升。托管本站vps的操作系统是运行5.5内核的CentOS 7(刚买时CentOS 8还未发布),启用BBR模块、从remi源安装php 7.4、redis 5最新版、从Nginx、MariaDB官方源安装的最新版Nginx、MariaDB;

2. PHP启用opcache模块,session存储到redis,nginx和php-fpm通过unix socket通信;

3. Nginx启用gzip压缩,图片使用webP格式,静态资源缓存时间设置为最大;

4. WordPress安装缓存插件,例如W3 Total Cache、 WordPress Super Cache、Autoptimize等,本站用的Autoptimize,可以删除谷歌字体,也能预加载关键资源和预连接;

5. 移除wp-login.php,xmlrpc.php的直接访问。可以通过Redirection等插件实现,但本人更推荐通过Nginx直接将这两个地址重定向,操作请参考 WordPress防止密码爆破。这个做法不仅安全,避免暴力破解,还能避免无聊/恶意的人消耗CPU;

6. 启用Nginx的缓存,强烈推荐,操作指南: 使用Nginx缓存加速WordPress站点

7. 删除不必要的插件。开启的插件越多,后端PHP的负担越大,自然响应就更慢;

8. 禁用WordPress自带的cron任务,改成crontab执行。

Mysql数据库优化,个人认为比较专业,没有太通用的方案,本站也没对数据库做特别优化。

另外个人认为一个很重要的优化手段是使用SSD硬盘,但是本站的机器是普通硬盘,并未实践。

如果你还有其他有效的性能优化技术,欢迎指点!

参考

1. The Ultimate Speed Guide for WordPress on NGINX

2. 使用Nginx缓存加速WordPress站点