wordpress开启Redis加速教程

  • A+
所属分类:WordPress技巧

WordPress功能很强大,但是性能确实比较慢, WordPress采用的是动态数据库查询技术。通俗的说,就是用户访问每篇文章或页面,都会向数据库发送一条查询命定,数据库根据命定查询之后,反送查询结果(这个结果不考虑任何缓存技术)。显然,如果访问量大的时候,会出现频繁的查询。所以这会减慢网站速度。如果服务器性能不高,瞬间网站就崩溃了。

所以需要一种技术,来减少数据库查询次数。而数据库缓存技术就是其中之一。Redis技术是其中的佼佼者。Redis是key-value分布式存储系统。简单的说,就是根据关键词值进行查询,这在很大程度上弥补了Memcached的短板。通过Redis进行数据库缓存,查询速度会更快,并发数更多。

本次教程使用宝塔面板,后台的软件管理里面就可以直接安装Redis,不用去ssh下面敲命令来下载安装,提供的这种方法,更适合小白,毕竟谁都不是大神,用最简单的方法,让我们的博客变的飞起来,那何乐而不为呢。
wordpress开启Redis加速教程

第一:安装Redis扩展

安装过程也是很快的,稍等会安装好了,我们开始下一步。顺带介绍下redis。Redis是一个高级的key-value存储系统,类似memcached,所有内容都存在内存中,因此每秒钟可以超过10万次GET操作。如果流量很大的站我们可以用在redis缓存来解决流量太大给服务器带来的压力。

wordpress开启Redis加速教程
安装完最好重启下php服务

用宝塔面板远程下载的功能来完成下载所需要的redis文件

ttps://www.jinchuang.org/novel/doc/predis.php_file

 

wordpress开启Redis加速教程

然后,我们点击确定可以了,我们可以刷新下这个目录,就可以看到下载的东西了。下载好,可以安装前面说的修改下权限
wordpress开启Redis加速教程
后面的前端缓存的PHP脚本index-with-redis.php也可以安装这个方法(https://www.jinchuang.org/novel/doc/index-with-redis.php_file)来下载,然后修改权限和用户。
复制以下代码创建index-with-redis.php
是修改了bug,这个版本也是我目前在用的版本。

<?php




$cf = 0;                
$debug = 1;             

$start = microtime();   


if ($cf) {
    if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
        $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
    }
}


define('WP_USE_THEMES', true);


include("predis.php");
$redis = new Predis\Client('');


$domain = $_SERVER['HTTP_HOST'];
$url = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
$url = str_replace('?r=y', '', $url);
$url = str_replace('?c=y', '', $url);
$dkey = md5($domain);
$ukey = md5($url);


(($_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0);


$cookie = var_export($_COOKIE, true);
$loggedin = preg_match("/wordpress_logged_in/", $cookie);


if ($redis->hexists($dkey, $ukey) && !$loggedin && !$submit) {

    echo $redis->hget($dkey, $ukey);
    if (!$debug) exit(0);
    $msg = 'this is a cache';


} else if ($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') {

    require('./wp-blog-header.php');
    $redis->hdel($dkey, $ukey);
    $msg = 'cache of page deleted';


} else if ($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') {

    require('./wp-blog-header.php');
    if ($redis->exists($dkey)) {
        $redis->del($dkey);
        $msg = 'domain cache flushed';
    } else {
        $msg = 'no cache to flush';
    }


} else if ($loggedin) {

    require('./wp-blog-header.php');
    $msg = 'not cached';


} else {

    
    ob_start();

    require('./wp-blog-header.php');

    
    $html = ob_get_contents();

    
    ob_end_clean();
    echo $html;

    
    $redis->hset($dkey, $ukey, $html);
    $msg = 'cache is set';
}

$end = microtime(); 


if ($debug) {
    echo $msg.': ';
    echo t_exec($start, $end);
}


function t_exec($start, $end) {
    $t = (getmicrotime($end) - getmicrotime($start));
    return round($t,5);
}


function getmicrotime($t) {
    list($usec, $sec) = explode(" ",$t);
    return ((float)$usec + (float)$sec);
}

?>

 

调试修改index-with-redis.php的一些参数

$cf = 1; 
$debug = 0; 
$display_powered_by_redis = 1; 

 

安装 WP Redis 插件 (Redis Object Cache)

在 WordPress 后台插件管理安装Redis Object Cache插件

wordpress开启Redis加速教程

在Wordpress后台启用 Redis Object Cache插件,然后点击Connect。
wordpress开启Redis加速教程

禁用某个Redis缓存

使用了Redis缓存后,有些主题或者是插件可能出现不兼容的问题,例如挖站否论坛使用的插件Anspress就不兼容Redis,所以我们需要在wp-config.php中排除插件或者主题用到的Groups,代码如下:

define('WP_REDIS_IGNORED_GROUPS',array('comment','counts','plugins','themes','anspress','ap','ap_prefetch_activities','ap_q_id_activity','ap_users_reputation','ap_qameta','ap_prefetch_activities','ap_subscriber','ap_votes_queries','ap_vote'));多站点启用Redis缓存

如果你的服务器上运行了多个Wordpress,这个时候就需要WP_CACHE_KEY_SALT来给每个网站设置一个值,这样多个网站就可以共同启用Redis缓存了(字符串值可以使用上面的随机生成网址生成)。

define( 'WP_CACHE_KEY_SALT', 'hpWQo8vfb3' );

远程使用Redis缓存

如果你想要让你的Wordpress调用远程的Redis缓存(像阿里云、腾讯云就提供此类的服务),编辑wp-config.php指定Redis缓存的地址、端口、密码以及数据库等,如果配合上面的WP_CACHE_KEY_SALT设置,你又可以实现远程+多站点Redis缓存了。向网站根目录下的wp-config.php文件中添加以下内容,
代码如下:

define('WP_REDIS_HOST', '127.0.0.1');  
define('WP_REDIS_PORT', '6379');  
define('WP_REDIS_DATABASE', '0');  
define('WP_REDIS_PASSWORD', '123456');  

 

Redis完整配置命令如下,请根据自己的需要使用:


define('WP_REDIS_CLIENT', 'pecl'); 
define('WP_REDIS_SCHEME', 'tcp'); 
define('WP_REDIS_HOST', '127.0.0.1'); 
define('WP_REDIS_PORT', '6379'); 
define('WP_REDIS_DATABASE', '0'); 
define('P_REDIS_PASSWORD', ''); 
define('WP_CACHE_KEY_SALT', 'wp_'); 
define('WP_REDIS_MAXTTL', '86400');

 

使用Redis缓存也有一段时间了,遇到的问题主要有无法登录后台,清除Redis缓存正常了。另外,Redis缓存还可以导致插件和主题修改不生效

登录后台网站url后面加上?c=y即可刷新整个网站
可以在网站页面后面加上?r=y即可手工刷新
提交评论会自动刷新页面
刷新(f5)页面也可以刷新页面
如果您觉得删除不够彻底,可以写一个php放到网站上,每访问一次,即可全部清空redis数据库,代码如下:

<?php

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

$redis->flushall();
?>

 

——————————————————————————————————————————————————————————————

ssh安装教程:

SSH工具登陆VPS后,定位到你的网站根目录,比如网站目录:/www/wwwroot/www.httple.net;运行下方命令定位到所需网站的根目录

cd /www/wwwroot/www.httple.net 

然后运行下方命令下载所需的文件

wget http:

再运行下方命令修改权限

chown www.www ./predis.php

再运行下方命令下载前端缓存的PHP脚本

wget https:

修改权限

chown www.www ./index-with-redis.php

 

再用下方命令替换原网站目录的文件index.php,回车确定(这里说下,你可以备份下你的原来的index.php文件 ,如果你要还原可以直接删除掉这个然后用原来的还原。)

mv index-with-redis.php index.php

 

至此大功告成,Redis缓存成功开启!做完这步,就开启了Redis来加速WordPress,这时远在美国机房的网站的WordPress速度照样飞快。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin