WordPress Optimization Guide
前言
感謝朋友的幫助
从几个方面入手:
- Cloudflare CDN
- 缓存插件
- GZIP 压缩
- Redis 缓存
- Nginx
- PHP
- 页面静态化
Cloudflare CDN
Cloudflare
如果不是使用 Cloudflare 请略过
智能 DNS 解析(境内和境外)
智能 DNS 解析(境内和境外)
Cloudflare 页面缓存(Page Rules)优化 WordPress 全站缓存配置规则
Cloudflare 页面缓存(Page Rules)优化 WordPress 全站缓存配置规则
在 Cloudflare Page Rules 里添加两条规则
第一条
*.example.com/*
第二条
*.example.com/*.php*
这条规则可以说是十分重要了。如果不设置此条规则,那么我们的后台页面、甚至包括登陆页面也都会被 Cloudflare 给缓存进去。
此条规则是我们为了防止 Cloudflare 缓存我们的动态页面(登陆页、后台页)。这条简单粗暴的直接将所有带有 .php
的页面请求全部 Bypass 也就是不缓存。
缓存插件
Plugin
WordPress 的页面都是动态的,这意味着每次有人访问文章或者页面的时候,WordPress 都要将访问的页面重新生成一次。为了生成页面,WordPress 必须运行进程去查找所需的数据,然后将数据整合在一起,最后再呈现到用户的屏幕上。
这个过程涉及非常多的步骤,当有很多人同时访问你的网站时,就会明显拖慢网站的速度。
这里推荐使用 WP Rocket 或者 WP Super Cache
GZIP 压缩
GZIP
编辑根目录 index.php
找到 define( 'WP_USE_THEMES', true );
在后面加上:
1 | /** 开启gzip压缩 */ |
这种方法最简单,缺点是 WordPress 升级后需要重新设置
通过 Redis 缓存提升 WordPress 访问速度
通过 Redis 缓存提升 WordPress 访问速度
转自:通过 Redis 缓存提升 WordPress 访问速度 ~ 萌!萝莉 (loliloli.moe)
安装 Redis
安装 Redis
前往 Redis 官网 下载稳定版的 Redis 备用(建议直接 wget)
这篇文章所在时间的稳定版如上 6.0.10 版本(实际上这里自己用的版本甚至还低一点)
接下来在服务器使用如下指令来完成安装
1 | wget https://download.redis.io/releases/redis-6.0.10.tar.gz |
- 注意:
- 1.这里将 Redis 安装到了
/usr/local/redis
这个路径,如果需要安装到其他地方,请修改上方make PREFIX=
的路径- 2.如果出现
警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
报错,请更新 gcc 版本。 CentOS7 可以使用如下指令安装高版本 gcc
1 | yum install centos-release-scl scl-utils-build |
现在将配置文件复制到对应目录 cp /root/redis-6.0.10/redis.conf /usr/local/redis/bin
就可以准备启动 Redis 了
这里我们先修改 redis.conf 文件来后端模式启动,修改 daemonize 为 yes 即可。
现在输入 ./redis-server ./redis.conf
即可正常启动
这里我们通过输入 ps -aux | grep redis
即可看到 Redis 进程情况
好了,以上就是安装方法,关于开机自启方面可以使用以下两种方案
1 | vim /etc/rc.local |
编辑 rc.local 添加如下内容
1 | /usr/local/redis/bin/redis-server /usr/local/redis/etc/redis-conf |
或者创建一个启动脚本
1 | vim /etc/init.d/redis |
内容如下
1 | # !/bin/sh |
退出保存,且给予权限
1 | chmod 777 /etc/init.d/redis |
安装 PHP 的 Redis 扩展
安装 PHP 的 Redis 扩展
首先先下载 Redis 扩展 ,选择对应版本即可,这里将会以 PHP 7.2 为例展开
1 | wget https://pecl.php.net/get/redis-5.3.2.tgz |

注意,以下的 /usr/local/php/bin/phpize
中请替换为自己的 PHP 安装路径
1 | /usr/local/php/bin/phpize |
接下来修改 PHP 配置文件加入 extension = redis.so
重启 PHP 即可
在站点目录下创建一个 phpinfo.php 文件,写入如下代码
1 | <?php |
访问 http(s)://youdomain/phpinfo.php 显示如下则 Redis 扩展安装正常
使用 Redis Object Cache 插件加速 WordPress 访问
使用 Redis Object Cache 插件加速 WordPress 访问
Nginx
Nginx 开启 Brotli 压缩算法
Nginx 开启 Brotli 压缩算法
转自:Nginx启用Brotli压缩 - 知乎 (zhihu.com)
创建 SSH key
创建 SSH key
使用git clone
命令从github上同步github上的代码库时,如果使用SSH链接,而你的SSH key没有添加到github帐号设置中,系统会报下面的错误:
1 | Permission denied (publickey). |
这时,需要在本地创建SSH key,然后将生成的SSH key文件内容添加到 GitHub帐号上去。
1 | ssh-keygen -t rsa -C "[你的 GitHub邮箱地址]" |
然后根据提示连按三次 Enter 键,生成的 SSH key 文件就保存到当前登录用户的目录文件夹下 id_rsa.pub
文件中。
如果是 root 用户,在 /root/.ssh/id_rsa.pub
打开 id_rsa.pub
文件,复制其内容
1 | vi /root/.ssh/id_rsa.pub |
先登录 GitHub后,打开设置, 然后点击New SSH key
按钮,新建 SSH key,粘贴刚才从id_rsa.pub
文件复制的内容,保存后即可。
下载 Brotli
下载 Brotli
google/ngx_brotli
从 16年12月的版本起,开始内置google/brotli
,所以我们不需要额外编译bagder/libbrotli
库,让安装变得简单起来。 我们将google/ngx_brotli
下载并解压到/usr/src/ngx_brotli
目录
1 | cd /usr/src |
然后在下载google/brotli
并解压到/usr/src/ngx_brotli/deps/brotli
1 | cd /usr/src/ngx_brotli/deps && rm -rf brotli |
编译 Brotli
编译 Brotli
Nginx 自 1.9.11 以后版本后支持动态模块 ,自此,给 Nginx 添加模块再也不用重新编译 Nginx 了,通过动态模块,你可以在运行时有有选择性的加载第三方或 Nginx 官方模块。新的实现方式通过 API 模块保持尽可能的向后兼容。
下载解压nginx安装包
下载解压nginx安装包
请下载与当前nginx版本相同的nginx安装包。nginx官方下载地址:http://nginx.org/en/download.html。 这里假设当前服务器 Nginx 是1.14.2
版本。
可通过命令,获取当前 Nginx 版本
1 | nginx -v |
输出
1 | nginx version: nginx/1.14.2 |
下载nginx安装包
1 | cd /usr/src |
解压安装包
1 | tar -xvf nginx-1.14.2.tar.gz |
编译动态模块
编译动态模块
先进入解压后的nginx安装包目录,配置configure
,然后用make modules
。
1 | cd nginx-1.14.2 |
参数语法:–add-dynamic-module=[模块源码所在目录的绝对路径]
等运行完成后,查看编译好的模块
1 | ls objs/*.so |
输出:
1 | objs/ngx_http_brotli_filter_module.so objs/ngx_http_brotli_static_module.so |
将编译好的模块文件复制到nginx动态模块加载目录
1 | cp objs/{ngx_http_brotli_filter_module.so,ngx_http_brotli_static_module.so} /etc/nginx/modules |
注册 Brotli 模块
注册 Brotli 模块
为了方便管理nginx动态模块,建议新建一个modules.conf
文件,单独管理动态模块。
1 | touch /etc/nginx/modules.conf |
在/etc/nginx/nginx.conf
配置文件里引入modules.conf
文件,找到以下内容并修改:
1 | pid /var/run/nginx.pid; |
打开/etc/nginx/modules.conf
,注册刚才编译好的 Brotli 模块。
1 | # Brotli模块 |
启用 Brotli 压缩
启用 Brotli 压缩
Brotli和gzip是可以并存的,无需关闭gzip。
在/etc/nginx/nginx.conf
开启Brotli :
1 | http { |
在反向代理配置文件代码中添加:
1 | proxy_set_header Accept-Encoding ""; |
范例:
1 | server { |
重启nginx,使其配置生效
1 | systemctl restart nginx |
Brotli 压缩只能在https 中生效,因为 在 http 请求中 request header 里的 Accept-Encoding: gzip, deflate 是没有 br 的。
PageSpeed 模块
PageSpeed 模块
转自:PageSpeed服务器优化神器-Nginx部署ngx_pagespeed模块和加速效果体验 - 挖站否-挖掘建站的乐趣 (wzfou.com)
PageSpeed 是 Google 推出的一项网页加速服务,分别有 Apache PageSpeed 和 ngx_pagespeed 两个模块,适用于 Apache 和 Nginx 服务器。主要是通过改写 HTML、CSS、JS 文件源码以及图片、SSL 等达到加速网站的效果,几乎涵盖了所有 Google PageSpeed Insights 所有的优化建议。
安装依赖
安装依赖
1 | # RedHat, CentOS, or Fedora |
下载安装包
下载安装包
1 | wget https://github.com/apache/incubator-pagespeed-ngx/archive/v1.13.35.2-stable.zip |
编译 Nginx
编译 Nginx
1 | # Nginx编译ngx_pagespeed通用做法: |
基本设置
基本设置
1 | # 启用ngx_pagespeed 开始 |
PHP
PHP
- 尽量使用高版本的 PHP,因为 PHP 的版本极大影响网站的运行速度
- 安装 OPCache 扩展
页面静态化
页面静态化
- 首先确保开启伪静态
- 使用 WP Rocket 或者 WP Super Cache 插件