Redis Object Cache

Redis Object Cache是一款由Till Krüss发布的WordPress免费开源插件,顾名思义其用途就是使用Redis来缓存数据,达到提高WordPress性能的效果。它支持PredisPhpRedis (PECL)CredisHHVM复写集群WP-CLI

什么是Redis缓存?

Redis和Memcached类似,是一个key-value存储系统,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。

Redis很大程度弥补了memcached这类key/value存储的不足,Redis虽然和memcached一样数据都是缓存在服务器端的内存中,但Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。Redis性能稍弱于memcached(Memcached完全基于内存),但差距非常小。

1. 安装 Redis Object Cache

在WordPress后台安装插件,搜索Redis Object Cache点击安装

2. 配置服务器

安装Redis

在宝塔面板软件商店中搜索Redis,点击安装

安装PHP Redis扩展

在PHP管理页面中安装扩展,找到Redis点击安装

3. 设置配置文件

在WordPress根目录的wp-config.php文件第二行<?php标签后添加以下代码。

//Redis Object Cache 配置文件
define('WP_REDIS_CLIENT', 'pecl'); # 指定用于与Redis通信的客户端, pecl 即 The PHP Extension Community Library
define('WP_REDIS_SCHEME', 'tcp'); # 指定用于与Redis实例进行通信的协议
define('WP_REDIS_HOST', '127.0.0.1'); # Redis服务器的IP或主机名
define('WP_REDIS_PORT', '6379'); # Redis端口
define('WP_REDIS_DATABASE', '0'); # 接受用于使用该SELECT命令自动选择逻辑数据库的数值
define('WP_CACHE_KEY_SALT', 'wp_'); # 设置所有缓存键的前缀(Wordpress多站点模式下使用)
define('WP_REDIS_MAXTTL', '86400'); # 缓存过期时间

4. 启用 Redis Object Cache

在WordPress后台中启用 Redis Object Cache 插件,进入 Redis Object Cache 设置界面,点击Enable Object Cache按钮,启用缓存。

此时界面变为如下,如果不是请检查之前步骤是否正确。

5. 测试

启用 Redis Object Cache之前

启用 Redis Object Cache之后

可以明显的看到未启用之前Sql请求数是136次,启用后只有23次了,由此可见效果及其明显,不过在非高并发场景下可能感知不强

WP Super Cache

WP Super Cache 是一个WordPress插件,我们都知道当你去请求一个WordPress页面时需要经过发送请求、查询数据库、生成页面、返回用户这几个步骤。而使用 WP Super Cache 可以将页面预先生成存储在服务器上,当收到请求时直接将预先生成好的页面返回给用户,这样便省去了查询数据库、生成页面这两个步骤。进而提高访问速度。

1. 安装WP Super Cache

在WordPress后台安装插件,搜索 WP Super Cache 点击安装。

2. 参数设置

安装启用后在设置里找到WP Super Cache,缓存实现方式有简单模式和专家模式两种,这里我只简单介绍下简单模式。这里设置根据自身设置,我的设置如下,可以做个参考。

这里用于设置缓存页面的有效时间和垃圾回收器的执行频率,需要注意的是当缓存页面有效时间过了它并不会立即删除,而是会等垃圾回收器执行时才会删除。

预缓存可以将页面预先缓存下来,而不用等第一次访问后再缓存。设置完时间和范围后点击立即加载预缓存即可生成页面缓存,之后会每隔XX分钟再生成一次,生成缓存页面比较耗资源生成频率根据服务器性能自行斟酌。

3. 测试

首先看一下未使用缓存时的请求情况,可以看到完全加载完一个页面需要6秒左右,而最长的请求是第一次请求,也就是说从发送请求到返回页面这一过程一共用了2.8秒。

在使用缓存后可以看到加载完一个页面只需要1.8秒左右,快了三倍。而第一次请求更是只用了300毫秒,快了将近十倍。

发表回复

后才能评论