先说明一下,对象缓存肯定是没有那种直接生成静态页面的缓存插件效果好的,尤其是对于一般的站点来说。所以如果不是刚需,最简单的办法就是给你的站点装上CometCache、WPSuperCache这样的插件,方便且暴力。
那对象缓存适合哪些站点呢?很明显,对于那些经常需要动用数据库查询的站点来说,对象缓存就弥补了上面说的那些插件无法做的事情。举两个例子:
1、假设一个日IP大于2万的WordPress站点,虽然这个站的流量很高,但是站点本身不需要开放用户注册的功能,那么站长最好的加速方案就是用各种类似CometCache的插件生成静态页面。因为这类站点本身就不大需要动用数据库查询,所以自然也就不太需要Redis做对象缓存。
2、假设还是一个日IP大于2万的WordPress站点,但是这个站点必须要开放用户注册,并且用户注册的数量也相当之多,每天登录的用户也相当之多,那么这个时候一个生成静态页面的缓存插件可能就达不到理想的效果了。因为用户登录的这种行为,插件是无法静态化的,那么这种本身就需要经常动用数据库查询的操作,该如何提高效率呢?很明显这个时候就需要用到Redis的对象缓存了。说白了,对象缓存就是缓存那些经常需要在数据库中查询的数据,当这种数据再次需要查询的时候,就可以通过Redis直接从内存中读取,而不需要再到MySQL中反复查询。这样就达到了一个加速、优化的效果。
下面进入正题~
首先本文用到的LNMP环境是通过这篇文章搭建的:
理论上在多数LNMP/LAMP环境都是可行的,无非就是个别编译的参数可能要稍作修改,这个你们根据自己的环境适当调整吧。如果不想折腾还是以我上面发的这篇文章来安装LNMP环境。
首先我们来安装Redis。
安装一些依赖:
yum -y install gcc-c++ jemalloc wget
下载Redis源码:
cd /root wget http://download.redis.io/releases/redis-4.0.8.tar.gz
解压:
tar xzf redis-4.0.8.tar.gz
进入到目录:
cd redis-4.0.8
编译:
make
注:如果这里用make无法编译成功,可以尝试用这个命令:
make MALLOC=libc
完成后如图所示:
进入到src目录:
cd src
安装Redis:
make install
完成后如图所示:
尝试启动:
redis-server
没错的话回显如下图的内容:
回到上级目录编辑一下Redis的配置文件,让其支持在后台运行:
cd .. vi redis.conf
将如图所示红框标注的地方改成yes:
再次运行Redis,并且加载这个配置文件:
redis-server ./redis.conf
看到类似如下图的回显说明运行正常:
至此Redis我们就安装并运行成功了。
接下来要安装PHPRedis扩展。
首先我们查找一下两个安装扩展必须的文件都在什么路径:
find / -name phpize find / -name php-config
如果你是根据我的LNMP教程安装的环境,那么路径如下:
/usr/bin/phpize /usr/bin/php-config
如图所示:
如果你不是按照我的教程安装的LNMP则需要记住你自己的这两个文件路径。
现在下载phpredis扩展源码:
cd /root wget https://github.com/phpredis/phpredis/archive/3.1.6.tar.gz
解压:
tar -xzvf 3.1.6.tar.gz
进入目录:
cd phpredis-3.1.6
执行命令:
/usr/bin/phpize
注:不是这个路径就换成你自己的路径。
回显如图说明正常:
配置:
./configure --with-php-config=/usr/bin/php-config
注:-config=后面的路径不是这个的话,就改成你们自己的路径。
编译和安装:
make make install
完成后如图所示:
进入到php.d目录:
cd /etc/php.d/
新建一个redis.ini:
vi redis.ini
写入如下内容:
;Enable redis extension module extension=redis.so
如图所示:
最后重启PHP:
systemctl restart php-fpm
现在打开PHP探针看看扩展是否已经安装成功:
在phpinfo内再次确定一下:
现在登录WordPress的后台,搜索插件:Redis Object Cache并安装:
启动插件:
不出意外的话,插件就连接成功了:
此时我们回到Xshell内查询一下Redis的数据库内是否保存了数据,以确保插件正常运行。
执行:
redis-cli
输入:
keys *
回显如图内容,说明有数据缓存进来:
当站点的页面被多次访问后,我们再来查询一下数据,这次应该缓存的数据会比之前更多:
至此,你的WordPress站点现在正享受Redis给你带来的高速缓存体验~
写在最后:
1、LALA实测一般的小站点开启这个Redis缓存和不开没多大区别。。。页面加载速度并没有明显变快。扎心了。。。
2、一般的WordPress站点LALA个人觉得最好的优化办法就是PHP7+Opcache+CometCache缓存插件。以我的经验,用这个环境搭建的WordPress只要你的VPS性能本身不是特别渣,内存1G左右,然后站点本身不需要开放用户注册的,日IP跑5万左右都不是问题。
宝塔建站可以用这个吗?
宝塔很简单,“软件管理”里面可以直接安装。
谢谢,这篇文章很有用啊,赞! 有几个问题请教一下:
1、我的站(wordpress)目前不大,刚才测试了一下即便上了redis确实效果不明显。准备用生成静态文件的缓存方法了。有个顾虑:生成了静态的话,会影响用户评论吗?会及时显示不?
2、目前我没开通用户注册,只有用户留言功能,开通了微信、QQ等第三方登陆,以后也许可能开通用户注册功能。这个情况的话,博主建议是用redis还是PHP7+Opcache+CometCache?另外,PHP7有必要开启Opcache吗?
3、如果用缓存插件的话,博主是只推荐CometCache吗?不好意思,以前没听过这个,知道的也就是SUPERcache类似的,这个插件很好吗?
4、大致的比较好的提速流程是不是这样?WP本身缓存,然后再静态文件CDN。
再次谢谢博主的文章,不好意思一口气提了这么多问题
1、生成静态不会影响及时评论显示,现在插件都有自动清理缓存的功能,当站点有新文章、评论产生时,会自动清理旧的缓存。倒是需要注意一下有些主题自带的文章阅读数统计会出问题。
2、PHP7不开Opcache和闲鱼没什么区别233,Redis和Opcache没有冲突,一个是数据库缓存,一个是脚本缓存,两者可以完美结合,所以我建议要上就上全套:PHP7+Opcache+CometCache+Redis~
3、我个人喜欢用CometCache,因为使用最简单、方便。
4、CDN我基本不用。