萨龙网络
登录
首页-WordPress文章-WordPress,软件系统-正文

AMH面板安装配置redis加速WordPress站点

萨龙龙萨龙龙
WordPress, 软件系统
10年前
0
0
2.66W
AMH面板安装配置redis加速WordPress站点Redis是一个开源、支持网络、基于内存的key-value存储系统,类似memcached,性能极高,支持超过100K+ 每秒的读写频率,一些大型的网站例如ITeye(JavaEye)和CSDN现在都用到了Redis。 与memcached相比,Redis提供了持久化存储,重启了服务器后memcached需要重新创建缓存,而Redis依赖快照进行持久化,即使服务器刚开机启动也不会导致负载陡增。Redis缓存比较适合大流量的Wordpress。 当你的WordPress中的文章达到上万篇,随着流量的增加,Wordpress的服务器压力也随之不断加大,Wordpress发布文章和后台相关的操作都会变得缓慢,这时如果单从硬件上投入来提高Wordpress性能显然不划算。 利用Redis将WordPress页面直接缓存在服务器的内存中,这样在避免了PHP重复执行操作的同时,内存的极速响应能够最大限度地提升Wordpress页面的访问速度,实际测试发现页面执行时间可以降低到0.00X秒级别,比没有使用Redis缓存提升几倍甚至十几倍以上。 用Redis缓存来给WordPress站点加速-适用于Apache和Nginx。

一、AMH面板上安装redis插件

如果你使用的不是AMH面板就使用SSH进行安装redis,在AMH面板需要安装redis+pecl_redis两个软件(支持PHP7),pecl_redis是AMH面板Redis软件的php环境扩展模块。下载安装好后,在应用软件中点击pecl_redis后面的管理,选择需要缓存的环境,安装即可。

二、用Predis.php作为Redis的PHP客户端

1、我们可以使用Predis.php来作为PHP客户端,直接将Predis.php下载并上传到Wordpress的根目录下,CD到Wordpress根目录,执行以下命令:
  1. wget http://uploads.staticjw.com/ji/jim/predis.php
2、这是Predis.php的备份下载:Predis.php下载,手动下载并上传WordPress网站根目录下。

三、安装Redis前端缓存的PHP脚本

1、Redis前端缓存的PHP脚本来自:http://www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/,为优化后的版本
  1. <?php
  2. /*
  3.     author: jeedo aquino
  4.     file: wp-index-redis.php
  5.     credit: jim westergren
  6.     updated: 2012-10-23
  7.     this is a redis caching system for wordpress inspired by jim westergren.
  8.     see more here: www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/
  9.     some caching mechanics are different from jim's script which is summarized below:
  10.     - cached pages do not expire not unless explicitly deleted or reset
  11.     - appending a ?c=y to a url deletes the entire cache of the domain, only works when you are logged in
  12.     - appending a ?r=y to a url deletes the cache of that url
  13.     - script still works even if allow_fopen is disabled
  14.     - submitting a comment deletes the cache of that page
  15.     - refreshing (f5) a page deletes the cache of that page
  16.     - includes a debug mode, stats are displayed at the bottom most part after 
  17.     for setup and configuration see more here:
  18.     www.jeedo.net/lightning-fast-wordpress-with-nginx-redis/
  19.     use this script at your own risk. i currently use this albeit a slightly modified version
  20.     to display a redis badge whenever a cache is displayed.
  21. */
  22. // change vars here
  23. $cf = 0;                // set to 1 if you are using cloudflare
  24. $debug = 0;             // set to 1 if you wish to see execution time and cache actions
  25. $display_powered_by_redis = 0;  // set to 1 if you want to display a powered by redis message with execution time, see below
  26. $start = microtime();   // start timing page exec
  27. // if cloudflare is enabled
  28. if ($cf) {
  29.     if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
  30.         $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
  31.     }
  32. }
  33. // from wp
  34. define('WP_USE_THEMES', true);
  35. // init predis
  36. include("predis.php");
  37. $redis = new Predis\Client('');
  38. // init vars
  39. $domain = $_SERVER['HTTP_HOST'];
  40. $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  41. $url = str_replace('?r=y', ''$url);
  42. $url = str_replace('?c=y', ''$url);
  43. $dkey = md5($domain);
  44. $ukey = md5($url);
  45. // check if page isn't a comment submission
  46. (($_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0);
  47. // check if logged in to wp
  48. $cookie = var_export($_COOKIE, true);
  49. $loggedin = preg_match("/wordpress_logged_in/"$cookie);
  50. // check if a cache of the page exists
  51. if ($redis->hexists($dkey$ukey) && !$loggedin && !$submit) {
  52.     echo $redis->hget($dkey$ukey);
  53.     if (!$debugexit(0);
  54.     $msg = 'this is a cache';
  55. // if a comment was submitted or clear page cache request was made delete cache of page
  56. else if ($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') {
  57.     require('./wp-blog-header.php');
  58.     $redis->hdel($dkey$ukey);
  59.     $msg = 'cache of page deleted';
  60. // delete entire cache, works only if logged in
  61. else if ($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') {
  62.     require('./wp-blog-header.php');
  63.     if ($redis->exists($dkey)) {
  64.         $redis->del($dkey);
  65.         $msg = 'domain cache flushed';
  66.     } else {
  67.         $msg = 'no cache to flush';
  68.     }
  69. // if logged in don't cache anything
  70. else if ($loggedin) {
  71.     require('./wp-blog-header.php');
  72.     $msg = 'not cached';
  73. // cache the page
  74. else {
  75.     // turn on output buffering
  76.     ob_start();
  77.     require('./wp-blog-header.php');
  78.     // get contents of output buffer
  79.     $html = ob_get_contents();
  80.     // clean output buffer
  81.     ob_end_clean();
  82.     echo $html;
  83.     // store html contents to redis cache
  84.     $redis->hset($dkey$ukey$html);
  85.     $msg = 'cache is set';
  86. }
  87. $end = microtime(); // get end execution time
  88. // show messages if debug is enabled
  89. if ($debug) {
  90.     echo $msg.': ';
  91.     echo t_exec($start$end);
  92. }
  93. // time diff
  94. function t_exec($start$end) {
  95.     $t = (getmicrotime($end) - getmicrotime($start));
  96.     return round($t,5);
  97. }
  98. // get time
  99. function getmicrotime($t) {
  100.     list($usec$sec) = explode(" ",$t);
  101.     return ((float)$usec + (float)$sec);
  102. }
  103. ?>
2、 你也可以直接点击备用下载:index-with-redis.php下载地址,再上传到WordPress根目录下。 3、 如果你正在使用cloudflare,请设置cf = 1; ,如果你想在页面上看到脚本执行时间和缓存加载时间,请设置$debug = 1; display_powered_by_redis = 1表示显示powered_by信息。 4、将index-with-redis.php上传到Wordpress的根目录,如果你使用的是nginx,重命令原来的index.php为任意其它名字,把index-with-redis.php重命名为index.php。 5、如果你使用的是Apache,则需要把.htaccess中出现的index.php替换成index-with-redis.php。 6、所有的操作完成后,你就可以刷新一下Wordpress页面,查看Redis缓存效果了。

四、Wordpress删除Redis页面缓存的方法

1、删除某一个页面的缓存:发表评论、按下F5刷新、在URL后面加上?r=y回车。 2、删除整站页面缓存:登录到Wordpress后台,在任意URL后面加上?r=y回车。 3、更新文章时自动刷新首页缓存:在你的Wordpress的Function.php中加入以下代码
  1. function newPostRefresh() {
  2.     $temp=file_get_contents("http://xxxxxxx/?r=y"); //xxxxxx自己替换
  3. }
  4. add_action('publish_post', 'newPostRefresh');
  5. add_action('edit_post', 'newPostRefresh');
  6. add_action('delete_post', 'newPostRefresh');
  7. add_action('comment_post', 'newPostRefresh');
  8. add_action('edit_comment', 'newPostRefresh');
  9. add_action('delete_comment', 'newPostRefresh');
  10. add_action('wp_set_comment_status', 'newPostRefresh');
  11. add_action('switch_theme', 'newPostRefresh');
4、自动更新Wordpress缓存:在crontab中配置每10分钟用curl访问首页更新缓存,每天凌晨对首页或者分类页面进行更新,AMH可以安装amcrontab软件来进行设置。
  1. */10 * * * * curl http://www.freehao123.com/?r=y 
  2. 1 1 * * * curl http://www.freehao123.com/fenye/?r=y

五、Wordpress Redis缓存使用小结

Wordpress Redis缓存加速效果无疑是明显的,特别页面多访问大的网站博客,在使用Wordpress Redis缓存加速时请禁止其它的所有缓存插件,以免造成不必要的冲突。经过测试Wordpress Redis缓存在使用过程中主要存在的问题就是文章更新时,相应的Tag和分类、首页等内容不会实时更新,我们需要手动更新或者利用自动更新命令。 文章来源:免费资源部落
标签:
本文原创,作者:萨龙龙,其版权均为萨龙网络所有。
如需转载,请注明出处:https://salongweb.com/amh-redis-wordpress.html
萨龙龙

萨龙龙

侠客
一个平平常常的人,热爱生活、旅行和摄影,骑行去过西藏,一直计划再去。14年从江西骑行来到大理,现栖居于洱海边,食人间烟火,过简单生活,做简约设计!
1412.36M457.17W4.42W
加载中…
分享:
Wordpress循环中判断为每篇文章设计不同的样式
Wordpress循环中判断为每篇文章设计不同的样式上一篇
翻译WordPress强大实用的Redux框架选项下一篇
翻译WordPress强大实用的Redux框架选项
相关文章
总数:121

WordPress 限制上传媒体的文件类型

MNews和LensNews主题都有前台投稿的功能,用户可以上传图片等文件,管理员是不希望用户上传任意的媒体文件,这时我们可以对用户上传的…
萨龙龙萨龙龙
WordPress
7年前
0
0
1.30W
0

WordPress 功能函数—— add_action(将函数挂接到特定的操作上)

描述 WordPress核心执行期间,在特定点执行时或特定事件发生时,Actions是钩子。插件可以指定使用ActionAPI在…
萨龙龙萨龙龙
WordPress Functions
7年前
0
0
2.30W
0

WordPress多站点社区动态中获取自定义文章类型更新

萨龙网络使用Buddypress社区已经很长一段时间,在社区首页动态中可能获取整个网站的最新文章、用户注册,用户动态内容,而自定义文章类型的发布…
萨龙龙萨龙龙
Buddypress, WordPress
10年前
0
0
1.25W
0

WordPress判断文章分页第一页和最后一页

Perimg主题,最近开发的一个图片主题,与之前开发的主题又有很多的进步,以及更多的、少见的实用功能。主题文章中如果是多页就会显示上下篇、上下页…
萨龙龙萨龙龙
WordPress
10年前
0
0
1.25W
0

WordPress前台登录函数wp_login_form的用法

网站开放注册的站点都会添加一个前台登录与注册的表单或页面,这样方便用户登录站点,同时也保证网站后台的安全性。今天我们来介绍前台登录函数wp_lo…
萨龙龙萨龙龙
WordPress
9年前
0
0
2.01W
0

删除或失效WordPress文章中的图像大小属性

默认情况下,WordPress会将图像元素width和height属性添加到图像元素中。这些属性会影响CSS宽度和高度属性,图片延迟加载时默认图…
萨龙龙萨龙龙
WordPress, 前端资讯
7年前
0
0
1.21W
0

解决网站嵌入优酷视频堆叠顺序的问题

很多网站都会插入优酷或其它网站的在线视频到自己的网站中,默认情况下优酷视频的堆叠顺序并不受CSS样式z-index属性的影响,在视频页面有滚动、…
萨龙龙萨龙龙
WordPress
10年前
0
0
1.36W
0

WordPress自定义文章类型支持古腾堡编辑器(Gutenberg)

Gutenberg,WordPress最新的编辑器,每个模块都是一个blocks的形式。默认的编辑文章页面是支持 Gutenberg编辑…
萨龙龙萨龙龙
WordPress
7年前
0
0
1.46W
0

萨龙网络站点群所有网站使用https访问

HTTPS(全称:HyperTextTransferProtocoloverSecureSocketLayer),是以安全为目标的…
萨龙龙萨龙龙
WordPress
10年前
0
0
1.49W
0

WooCommerce为购物车和结算添加附加费 – 使用费用API

为所有交易添加基于百分比的附加费 /** *添加1%的附加费到你的购物车和结算页面 *更改百分比以将附加费设置为适合的…
萨龙龙萨龙龙
WooCommerce
6年前
0
0
1.20W
0

龙霄主题加盟推广:前端追踪归因、多语言支持,从流量到收益的全链路闭环

前言在数字化商业生态中,联盟营销(AffiliateMarketing)已成为品牌方拓展销售渠道、降低获客成本的核心手段。一套完整的加…
萨龙龙萨龙龙
Nuxt.js, Vue.js, WordPress
8天前
0
0
240
0

让SI CAPTCHA Anti-Spam插件支持WooCommerce注册表单验证码

萨龙网络使用的主题Purity最新版本弃用了Buddypress社区插件,这样注册表单只能使用WooCommerce商城自带的,验证码还是使用S…
萨龙龙萨龙龙
WooCommerce, WordPress
9年前
0
0
1.68W
0
评论表单游客 您好,欢迎参与讨论。
加载中…
评论列表
总数:0
萨龙网络
没有相关内容