亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > CMS > Wordpress > 正文

WordPress給網站配置Redis 緩存的例子

2024-09-07 00:51:05
字體:
來源:轉載
供稿:網友

Redis 是一個高級的 key-value 存儲系統,類似 memcached,所有內容都存在內存中,因此每秒鐘可以超過 10 萬次 GET 操作.我下面提出的解決方案是在 Redis 中緩存所有輸出的 HTML 內容而無需再讓 WordPress 重復執行頁面腳本,這里使用 Redis 代替 Varnish 設置簡單,而且可能更快.

安裝 Redis

如果你使用的是 Debian 或者衍生的操作系統可使用如下命令安裝 Redis:

apt-get install redis-server

使用 Predis 作為 Redis 的 PHP 客戶端,你需要一個客戶端開發包以便 PHP 可以連接到 Redis 服務上,這里我們推薦 Predis.上傳 predis.php 到 WordPress 的根目錄.

前端緩存的 PHP 腳本

步驟1:在 WordPress 的根目錄創建新文件 index-with-redis.php,代碼如下:

  1. <?php 
  2. // change vars here 
  3. $cf = 1; // set to 1 if you are using cloudflare 
  4. $debug = 0; // set to 1 if you wish to see execution time and cache actions 
  5. $display_powered_by_redis = 1; // set to 1 if you want to display a powered by redis message with execution time, see below 
  6.  
  7. $start = microtime(); // start timing page exec 
  8.  
  9. // if cloudflare is enabled 
  10. if ($cf) { 
  11. if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { 
  12. $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; 
  13.  
  14. // from wp 
  15. define('WP_USE_THEMES', true); 
  16.  
  17. // init predis 
  18. include("predis.php"); 
  19. $redis = new PredisClient(''); 
  20.  
  21. // init vars 
  22. $domain = $_SERVER['HTTP_HOST']; 
  23. $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; 
  24. $url = str_replace('?r=y'''$url); 
  25. $url = str_replace('?c=y'''$url); 
  26. $dkey = md5($domain); 
  27. $ukey = md5($url); 
  28.  
  29. // check if page isn't a comment submission 
  30. (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $submit = 1 : $submit = 0; 
  31.  
  32. // check if logged in to wp 
  33. $cookie = var_export($_COOKIE, true); 
  34. $loggedin = preg_match("/wordpress_logged_in/"$cookie); 
  35.  
  36. // check if a cache of the page exists 
  37. if ($redis->hexists($dkey$ukey) && !$loggedin && !$submit && !strpos($url'/feed/')) { 
  38.  
  39. echo $redis->hget($dkey$ukey); 
  40. $cached = 1; 
  41. $msg = 'this is a cache'
  42.  
  43. // if a comment was submitted or clear page cache request was made delete cache of page 
  44. else if ($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') { 
  45.  
  46. require('./wp-blog-header.php'); 
  47. $redis->hdel($dkey$ukey); 
  48. $msg = 'cache of page deleted'
  49.  
  50. // delete entire cache, works only if logged in 
  51. else if ($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') { 
  52.  
  53. require('./wp-blog-header.php'); 
  54. if ($redis->exists($dkey)) { 
  55. $redis->del($dkey); 
  56. $msg = 'domain cache flushed'
  57. else { 
  58. $msg ='no cache to flush'
  59.  
  60. // if logged in don't cache anything 
  61. else if ($loggedin) { 
  62.  
  63. require('./wp-blog-header.php'); 
  64. $msg = 'not cached'
  65.  
  66. // cache the page 
  67. else { 
  68.  
  69. // turn on output buffering 
  70. ob_start(); 
  71.  
  72. require('./wp-blog-header.php'); 
  73.  
  74. // get contents of output buffer 
  75. $html = ob_get_contents(); 
  76.  
  77. // clean output buffer 
  78. ob_end_clean(); 
  79. echo $html
  80.  
  81. // Store to cache only if the page exist and is not a search result. 
  82. if (!is_404() && !is_search()) { 
  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.  
  89. // show messages if debug is enabled 
  90. if ($debug) { 
  91. echo $msg.': '
  92. echo t_exec($start$end); 
  93.  
  94. if ($cached && $display_powered_by_redis) { 
  95. // You should move this CSS to your CSS file and change the: float:right;margin:20px 0; 
  96. echo "<style>#redis_powered{float:right;margin:20px 0;background:url(http://images.staticjw.com/jim/3959/redis.png) 10px no-repeat #fff;border:1px solid #D7D8DF;padding:10px;width:190px;} 
  97. #redis_powered div{width:190px;text-align:right;font:10px/11px arial,sans-serif;color:#000;}</style>"; 
  98. echo "<a href="http://www.aips.me/wordpress-with-redis-as-a-frontend-cache/" style="text-decoration:none;"><div id="redis_powered"><div>Page generated in<br/> ".t_exec($start, $end)." sec</div></div></a>"; 
  99.  
  100. // time diff 
  101. function t_exec($start$end) { 
  102. $t = (getmicrotime($end) - getmicrotime($start)); 
  103. return round($t,5); 
  104.  
  105. // get time 
  106. function getmicrotime($t) { 
  107. list($usec$sec) = explode(" ",$t); 
  108. return ((float)$usec + (float)$sec); 
  109. }
  110. ?> 

你也可以在 Github 上查看 index-with-redis.php

步驟2:將上述代碼中的 IP 地址和網站域名替換成你網站的 IP 地址和域名

步驟3:在 .htaccess 中將所有出現 index.php 的地方改為 index-with-redis.php ,如果你使用的是 Nginx 則修改 nginx.conf 中的 index.php 為 index-with-redis.php(并重載 Nginx:killall -s HUP nginx).

性能測試

沒有 Redis 的情況下,平均首頁執行 1.614 秒,文章頁 0.174 秒(無任何緩存插件).使用 Redis 的情況下,平均頁面執行時間 0.00256 秒.我已經在我的博客中使用了如上的方法進行加速很長時間了,一切運行良好.

其他建議:本文作者的 WordPress 環境是 Nginx + PHP-FPM + APC + Cloudflare + Redis.安裝在一個 VPS 中,無緩存插件.請確認使用了 gzip 壓縮,可加快訪問速度,

訪問 wp-admin:要訪問 wp-admin 必須使用 /wp-admin/index.php 代替原來的 /wp-admin/.

本文其實在國內已經有很翻譯過了,但我看到作者也一直在更新此文,反而國內譯者都不怎么更新,我就自己去重新折騰了一遍.


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美极品少妇xxxxⅹ裸体艺术| 国产精品爽爽ⅴa在线观看| 亚洲精品大尺度| 91av在线播放视频| 午夜精品久久久久久久久久久久久| 国产精品久久久久久中文字| 中文.日本.精品| 国产精品中文在线| 日韩欧美成人免费视频| 国产精品精品视频一区二区三区| 国产精品爽黄69| 亚洲a区在线视频| 久久久久久久久久久av| 国产精品普通话| 中文字幕亚洲一区| 亚洲人成免费电影| 日本不卡视频在线播放| 亚洲美女精品成人在线视频| 欧美国产高跟鞋裸体秀xxxhd| 久久久久久久91| 亚洲专区国产精品| 欧美性视频网站| 日韩在线视频二区| 欧美在线中文字幕| 国产精品视频在线播放| 亚洲国产成人久久综合一区| 91sa在线看| 欧美成人sm免费视频| 91精品久久久久久久久青青| 亚洲国产精品99久久| 欧美又大粗又爽又黄大片视频| 久久久久久久国产精品| 伊人伊人伊人久久| 国产精品啪视频| 国产精品www色诱视频| 精品久久久久久中文字幕大豆网| 国产美女搞久久| 国产激情久久久久| 伊人伊成久久人综合网站| 亚洲成人av片在线观看| 国产在线播放91| www.日韩不卡电影av| 亚洲精品mp4| 国产一区二区成人| 欧美黑人巨大精品一区二区| 日韩中文字幕欧美| 日韩精品免费视频| 成人欧美在线观看| 国产欧美婷婷中文| 日本高清+成人网在线观看| 91久久精品国产91久久| 97精品一区二区三区| 国产欧美日韩精品专区| 国产精品高潮呻吟视频| 久久视频在线视频| 欧美电影电视剧在线观看| 亚洲第一偷拍网| 亚洲国产精品va在线| 国产精品私拍pans大尺度在线| 亚洲精品456在线播放狼人| 久久中文字幕视频| 欧美日韩国产二区| 亚洲自拍偷拍色图| 日韩欧美亚洲范冰冰与中字| 国产噜噜噜噜噜久久久久久久久| 欧美日韩亚洲高清| 亚洲福利小视频| 色偷偷av亚洲男人的天堂| 久热99视频在线观看| 中文字幕精品av| 欧美日韩亚洲国产一区| 欧美午夜精品久久久久久人妖| 丝袜亚洲欧美日韩综合| 中文字幕欧美日韩精品| 色妞欧美日韩在线| 日韩欧美在线网址| 久久国产一区二区三区| 欧美黄色片视频| 久久天天躁日日躁| 国产精品色视频| 亚洲综合在线中文字幕| 久热精品视频在线观看一区| 日韩欧美一区二区三区久久| 亚洲欧美日韩一区二区在线| 亚洲色图美腿丝袜| 国产亚洲欧美另类中文| 国产在线a不卡| 欧美视频在线免费看| 狠狠躁天天躁日日躁欧美| 911国产网站尤物在线观看| 热门国产精品亚洲第一区在线| 欧美性色xo影院| 日韩av在线网| 亚洲精品自拍第一页| 成人久久一区二区三区| 九九九热精品免费视频观看网站| 国产精品福利观看| 久久精品久久精品亚洲人| 69久久夜色精品国产7777| 亚洲精品日韩丝袜精品| 久久久久久这里只有精品| 欧美日韩国产成人高清视频| 韩剧1988在线观看免费完整版| 一个人看的www欧美| 国模gogo一区二区大胆私拍| 中国日韩欧美久久久久久久久| 亚洲免费成人av电影| 久久久久久成人| 久久艹在线视频| 亚洲欧美日韩国产精品| 亚洲成人av在线播放| 国产精品久久久久久久久影视| 欧洲亚洲在线视频| www.日韩av.com| 国产精品爱啪在线线免费观看| 成人免费网站在线观看| 亚洲综合中文字幕在线| 中文字幕亚洲字幕| 深夜福利一区二区| 精品亚洲男同gayvideo网站| 最新的欧美黄色| 欧美大胆a视频| 亚洲男女自偷自拍图片另类| 亚洲成人在线视频播放| 日韩毛片在线观看| 国内精品久久影院| 91精品视频大全| 国产午夜一区二区| 97超碰国产精品女人人人爽| 亚洲免费伊人电影在线观看av| 久久福利视频网| 亚洲午夜未满十八勿入免费观看全集| 中文字幕欧美日韩精品| 在线观看日韩av| 欧美中文字幕在线观看| 欧美重口另类videos人妖| 欧美在线亚洲一区| 亚洲欧美激情一区| 久久亚洲精品小早川怜子66| 亚洲男人7777| 国产日韩欧美中文| 欧美激情xxxx| 欧美在线www| 日韩在线欧美在线| 国产美女久久精品| 欧美亚洲成人精品| 日韩精品极品毛片系列视频| 色综合视频一区中文字幕| 亚洲精品之草原avav久久| 国产精品视频成人| 成人国产精品久久久久久亚洲| 日韩精品欧美激情| 欧美精品在线观看91| 黄色成人av在线| 国产日韩在线视频| 夜色77av精品影院| 久久精品视频播放| 精品国产一区二区三区在线观看| 91成品人片a无限观看| 日韩国产精品亚洲а∨天堂免| 欧美成人午夜激情在线| 国产精品视频色| 欧美国产日韩中文字幕在线| 2023亚洲男人天堂|