通过redis加速wordpress

  • A+
所属分类:资源分享

首先将你的index.php文件做个备份,建议更名为index.php.bak(实际上这个文件用处不太大,直接删除都行,不信你自己看内容)

然后将下面的内容,保存为index.php,并且上传到根目录:

  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 </html>
  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 = 1;             // set to 1 if you wish to see execution time and cache actions
  25. $start = microtime();   // start timing page exec
  26. // if cloudflare is enabled
  27. if ($cf) {
  28.     if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
  29.         $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
  30.     }
  31. }
  32. // from wp
  33. define('WP_USE_THEMES', true);
  34. // init predis
  35. include("predis.php");
  36. $redis = new Predis\Client('');
  37. // init vars
  38. $domain = $_SERVER['HTTP_HOST'];
  39. $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  40. $url = str_replace('?r=y', ''$url);
  41. $url = str_replace('?c=y', ''$url);
  42. $dkey = md5($domain);
  43. $ukey = md5($url);
  44. // check if page isn't a comment submission
  45. (($_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0);
  46. // check if logged in to wp
  47. $cookie = var_export($_COOKIE, true);
  48. $loggedin = preg_match("/wordpress_logged_in/"$cookie);
  49. // check if a cache of the page exists
  50. if ($redis->hexists($dkey$ukey) && !$loggedin && !$submit) {
  51.     echo $redis->hget($dkey$ukey);
  52.     if (!$debugexit(0);
  53.     $msg = 'this is a cache';
  54. // if a comment was submitted or clear page cache request was made delete cache of page
  55. else if ($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') {
  56.     require('./wp-blog-header.php');
  57.     $redis->hdel($dkey$ukey);
  58.     $msg = 'cache of page deleted';
  59. // delete entire cache, works only if logged in
  60. else if ($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') {
  61.     require('./wp-blog-header.php');
  62.     if ($redis->exists($dkey)) {
  63.         $redis->del($dkey);
  64.         $msg = 'domain cache flushed';
  65.     } else {
  66.         $msg = 'no cache to flush';
  67.     }
  68. // if logged in don't cache anything
  69. else if ($loggedin) {
  70.     require('./wp-blog-header.php');
  71.     $msg = 'not cached';
  72. // cache the page
  73. else {
  74.     // turn on output buffering
  75.     ob_start();
  76.     require('./wp-blog-header.php');
  77.     // get contents of output buffer
  78.     $html = ob_get_contents();
  79.     // clean output buffer
  80.     ob_end_clean();
  81.     echo $html;
  82.     // store html contents to redis cache
  83.     $redis->hset($dkey$ukey$html);
  84.     $msg = 'cache is set';
  85. }
  86. $end = microtime(); // get end execution time
  87. // show messages if debug is enabled
  88. if ($debug) {
  89.     echo "<div id=\"redis_powered\"><div>$msg : ".t_exec($start$end)." sec</div></div>";
  90. }
  91. // time diff
  92. function t_exec($start$end) {
  93.     $t = (getmicrotime($end) - getmicrotime($start));
  94.     return round($t,5);
  95. }
  96. // get time
  97. function getmicrotime($t) {
  98.     list($usec$sec) = explode(" ",$t);
  99.     return ((float)$usec + (float)$sec);
  100. }
  101. ?>

还需要一个文件predis.php,已经打包好了,直接下载即可(猜猜下载地址在哪)

最后在你主题的style.css末尾添加如下代码:

  1. #redis_powered{margin:0px auto;background:url(https://birdteam.net/wp-content/themes/begin/img/redis.png) 10px no-repeat #fff;border:1px solid #D7D8DF;padding:10px;width:320px;}
  2. #redis_powered div{width:300px;text-align:right;font:9px/10px arial,sans-serif;color:#000;}
  • 我的微博
  • 这是微博的扫一扫
  • weinxin
  • 微信公众
  • 微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

目前评论:64   其中:访客  64   博主  0

    • avatar 炊盐摆植荷撞臃瘫肮照负囱怪玫疾顿汹得 9

      签到成功!签到时间:今日的上午8:25:00,每日打卡,生活更精彩哦!

      • avatar 勤仕簿旧酵圆桃祭爻栽乇找侍破摆越谙期 9

        签到成功!签到时间:今日的上午6:23:47,每日打卡,生活更精彩哦!

        • avatar 部炭霉掷斗岳业欣夜椎泻率贫啪秦即始稻 9

          签到成功!签到时间:今日的上午6:03:54,每日打卡,生活更精彩哦!

          • avatar 丛蕉涂子妆辣木墩辖谡霸扛罢烧废陆孪掷 9

            签到成功!签到时间:今日的上午4:19:17,每日打卡,生活更精彩哦!

            • avatar 疚伤闪鸭艺等尚感棺岛汛焦掖拇蚕票僭烈 9

              签到成功!签到时间:今日的上午2:41:37,每日打卡,生活更精彩哦!

              • avatar 衅捣藤抗馅炼净坦诖端脱慌撞袒妊疚盎芯 9

                签到成功!签到时间:今日的下午8:40:07,每日打卡,生活更精彩哦!

                • avatar 滥埠瓜蒙纶憾拘炕漳藏鸵秆纬俟矣丫泼购 9

                  签到成功!签到时间:今日的下午8:05:17,每日打卡,生活更精彩哦!

                  • avatar 赡约拐橇偕浦氖盗然交承缺孜透晌德换航 9

                    签到成功!签到时间:今日的下午7:46:06,每日打卡,生活更精彩哦!

                    • avatar 路挚泻得底汗康度姥窝栽瀑耗狄揭粘性俳 9

                      签到成功!签到时间:今日的下午6:18:02,每日打卡,生活更精彩哦!

                      • avatar 疟帐仲抑苑倏成概砸鲁鬃荡嫌人肛嵌妇啡 9

                        签到成功!签到时间:今日的下午2:08:11,每日打卡,生活更精彩哦!