- A+
WordPress功能很强大,但是性能确实比较慢, WordPress采用的是动态数据库查询技术。通俗的说,就是用户访问每篇文章或页面,都会向数据库发送一条查询命定,数据库根据命定查询之后,反送查询结果(这个结果不考虑任何缓存技术)。显然,如果访问量大的时候,会出现频繁的查询。所以这会减慢网站速度。如果服务器性能不高,瞬间网站就崩溃了。
所以需要一种技术,来减少数据库查询次数。而数据库缓存技术就是其中之一。Redis技术是其中的佼佼者。Redis是key-value分布式存储系统。简单的说,就是根据关键词值进行查询,这在很大程度上弥补了Memcached的短板。通过Redis进行数据库缓存,查询速度会更快,并发数更多。
本次教程使用宝塔面板,后台的软件管理里面就可以直接安装Redis,不用去ssh下面敲命令来下载安装,提供的这种方法,更适合小白,毕竟谁都不是大神,用最简单的方法,让我们的博客变的飞起来,那何乐而不为呢。
第一:安装Redis扩展
安装过程也是很快的,稍等会安装好了,我们开始下一步。顺带介绍下redis。Redis是一个高级的key-value存储系统,类似memcached,所有内容都存在内存中,因此每秒钟可以超过10万次GET操作。如果流量很大的站我们可以用在redis缓存来解决流量太大给服务器带来的压力。
安装完最好重启下php服务
用宝塔面板远程下载的功能来完成下载所需要的redis文件
ttps://www.jinchuang.org/novel/doc/predis.php_file
然后,我们点击确定可以了,我们可以刷新下这个目录,就可以看到下载的东西了。下载好,可以安装前面说的修改下权限
后面的前端缓存的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 Object Cache插件,然后点击Connect。
禁用某个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速度照样飞快。
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫