WordPress

WordPress启用Redis为网站加速,WordPress提速教程实战版

微信扫一扫,分享到朋友圈

WordPress启用Redis为网站加速,WordPress提速教程实战版
6

写这篇文章其实我是拒绝的。因为在次之前网上到处都是相关的文章,而且基本上千篇一律,不过千篇一律的文章真的能用啊。又不是不能用,对不,但是由于本博客上线以来一篇文章都没更新,所以还是写一下相关步骤。

在启用WordPress redis加速之前,首先要安装Redis数据库并开启PHP扩展,不同的环境开启方法都不太一样,有些简单有些复杂,大家暂时可以Google或者百度查找相关文档,博主用的是宝塔环境,开启是非常简单的,宝塔4.X直接后台选PHP配置直接安装redis扩展即可,如图:

其他系统环境,大家搜索下网络,很多教程,关键字 “系统环境 + 安装redis php扩展”如果实在搞不定,我也愿意效劳。

扩展开启后的phpinfo应该是这样的,正确显示了redis版本

配置WordPress的redis支持

万事俱备,下面就开始启用WordPress的redis支持吧。这个过程我尽量给大家简化。

第一,下载predis.php放到你的网站根目录,与index.php同目录,predis.php下载地址 : http://pc.haibakeji.com/down/predis.zip

或者 直接 wget 文件。

wget https://uploads.staticjw.com/ji/jim/predis.php

第二,下载index-with-redis.php 放到你的网站根目录,同上,与predis.php保持一个目录 下载地址:http://pc.haibakeji.com/down/index-with-redis.zip (原版Github:https://gist.github.com/JimWestergren/3053250#file-index-with-redis-php),当然网上还有一份修改版,据说是修改了bug下载地址:http://pc.haibakeji.com/down/index-with-redis-rebuild.zip 这个版本也是我目前在用的版本。

需要修改的地方:

$cf = 1; //  如果开了cloudflare这里设置为1,否则为0
$debug = 0; // 是否开启底部调试信息,显示执行时间等
$display_powered_by_redis = 1; // 这个是原版文件带的功能,修改版已经取消,以上1位显示powered by redis , 0 关闭。

 

第三,把原index.php修改为任意文件,比如index-back.php,同时修改index-with-redis.php为index.php,就开启了redis缓存。

第四,如果不想修改index.php,同时保持index-with-redis.php不变,需要修改伪静态规则,以Apache的.htaccess 为例子。修改如下字段

 //原始伪静态规则
RewriteRule . /index.php [L]

//修改后的规则
RewriteRule . /index-with-php.php [L]

测试效果

因为要测试效果,这里需要打开debug参数,修改index-with-redis.php(如果修改为index.php则打开index.php)里面的debug参数为0。

这里需要注意的是,插件默认在管理员登陆状态下是无法生存缓存和加载缓存的,请退出后台账户,或者开启浏览器隐身模式!

测试效果如上图,以首页为例,管理员账户登陆状态下载入首页时间为0.31 设置cache 以后,再次访问首页时间降至了0.0046,提升惊人!

写在最后

插件默认在管理员登陆状态下,F5刷新当前页面 或者在 url后面加入参数 ?r=y  可以删除当前页面缓存,在任意参数加入 ?c=y  可以删除全站缓存,前提是登陆状态下,如果您觉得删除不够彻底,可以写一个php放到网站上,每访问一次,即可全部清空redis数据库,代码如下:

<?php
//连接本地的 Redis 服务
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
//执行命令清空数据库
$redis->flushall();
?>

 

由于时间仓促,关于如何安装redis数据库 和开启PHP扩展本文并没有详细说明,此类教程网上也有很大,大家可以百度Google搜寻。

有点疑问

本插件开启了以后对网站的访问速度提升很大,但是对于自适应的站点,同时模板或者插件里使用了php函数当做条件来判断事件的时候,那么缓存后的数据就以缓存时间的参数为准了,无法做到真正的自适应。比如很多主题和插件使用了 wp_is_mobile() 参数来判断是否为移动设备,然后根据返回值来觉得展现内容,这样问题就来了,如果手机用户先访问自适应站点,触发了缓存,这个时候redis里的缓存为手机用户要看的内容,如果在此以后电脑用户再访问的话看到的也是手机用户的内容,这样很不科学。反之亦然,PC缓存 手机访问的话看到的是PC内容,下一篇文章我将会写,如何修改index-with-redis.php文件来实现针对手机和电脑分别缓存以达到真正的自适应。

自媒体人,喜欢网络,热爱研究。本站头条号:星河 熊掌号:海拔科技

欢迎访问海拔科技,这是海拔科技的第一篇文章。

上一篇

容灾备份中常见的RTO与RPO是什么意思?

下一篇

你也可能喜欢

6 条评论

  1. 为啥我的网站用了以后分类页都是变成白色背景 只有一部分文字和图片啊 有些页面刷新几次就变成正常有些就不行

    1. @sbking 建议打开调试模式看下错误原因

  2. Notice: Undefined index: HTTP_CACHE_CONTROL in /www/wwwroot/example.com/index.php on line 64
    有时会在页头报这个错误, :cry: 请问是什么问题呢,但我发现贵站没有这问题。

    1. @龍猫 本站暂时没有用redis,但是我的另一个站在用没有出现这个问题,这个问题意思是HTTP_CACHE_CONTROL 变量未定义,是不是因为PHP版本的问题?

  3. 碰到了redis对pc和手机缓存区分的问题,期待大佬的下一篇文章如何解决这个问题

    1. @Hao 最近时间紧,第二篇文章这两天更下,其实很简单。

发表评论

您的电子邮件地址不会被公开。 必填项已用 * 标注

提示:点击验证后方可评论!

插入图片