首頁 >後端開發 >php教程 >安裝Redis前端快取的PHP腳本

安裝Redis前端快取的PHP腳本

WBOY
WBOY原創
2016-07-28 08:27:571073瀏覽

1.Redis 快取的PHP 腳本來自:http://www.shenbogame.com.com/wordpress-with-redis-as-a-frontend-cache/ 
之後的最底部部分。      有關設定和配置的更多信息,請參閱此處:www.jeedo.net/lightning-fast-wordpress-with-nginx-redis/ 使用此腳本需要您自擔風險。我目前使用這個雖然有點 修改後的版本,每當顯示快取時都會顯示 Redis 徽章。 */  // 在此更改變數$cf = 1;// 如果您使用的是cloudflare,則設定為1 $debug = 0;// 如果您希望查看執行時間和快取操作,則設定為1 $display_powered_by_redis = 1;  // 若要顯示包含執行時間的powered by redis 訊息,請設定為1,請參閱下方$start = microtime();   // 啟動計時頁執行// if cloudflare 啟用if ($cf) {     if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {         $_SERVER['REMOTE_ADDR'] = $_SERVERNEC['HTTP_CF_CONTINGVER_IP'] true);  // 初始化predis include("predis.php"); $redis = new PredisClient(''); // 初始化變數$domain = $_SERVER['HTTP_HOST']; $url = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $url = str_replace('?r= y', '', $url); $url = str_replace('?c=y', '', $url); $dkey = md5($domain); $ukey = md5($url);  // 檢查頁面是否沒有評論 提交 (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'max-age=0') ? $提交 = 1 : $提交 = 0;  // 檢查是否登入 wp $cookie = var_export($_COOKIE, true); $loggedin = preg_match("/wordpress_logged_in/", $cookie);  // 檢查頁面快取是否存在if ($redis->hexists($dkey, $ukey) && !$loggedin && !$submit && !strpos($url, '/feed/')) {      echo $redis- >hget($ dkey, $ukey);     $快取= 1;     $msg = '這是一個快取';  // 如果提交了註解或清除頁面 已發出快取請求刪除頁面快取} else if ($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') {      require('./wp-blog-header. php ');     $redis->hdel($dkey, $ukey);     $msg = '頁面快取已刪除';  // 刪除整個緩存,僅有效 若登入} else if ($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') {      require('./wp-blog-header.php');     if ($ redis->exists($dkey)) {         $redis->del($dkey);         $msg = '網域快取已刷新';     } else {        $msg = '   $msg = ' 快取刷新';     }  // 如果登錄,則不快取任何內容} else if ($loggedin) {      require('./wp-blog-header.php');     $msg = '未快取';  /// 快取頁面} else {      // 開啟輸出緩衝    ob_start();      require('./wp-blog-header.php');      // 取得輸出緩衝區的內容 $html = ob_get_contents();      // 清理輸出緩衝區 ob_end_clean();     回顯$html;      // 僅在頁面存在且沒有快取結果時才存在     if (!is_404() && !is_search()) {         // 存儲 html 內容到redis 快取        $redis->hset($dkey, $ukey, $html);         $msg = '快取已設定';     } } $end = microtime(); // 取得結束時間///啟用了偵錯則顯示訊息if ($debug) {     echo $msg.': ';     迴聲t_exec($開始,$結束); }  if ($cached && $display_powered_by_redis) { // You should move this CSS to your CSS file and change the: float:right;margin:20px 0; echo ""; echo "

"; }  // time diff function t_exec($start, $end) {     $t = (getmicrotime($end) - getmicrotime($start));     return round($t,5); }  // get time function getmicrotime($ t) {     list($usec, $sec) = explode(" ",$t);     return ((float)$usec + (float)$sec); }  ?>
2、 你也可以直接點擊備用下載:index-with-redis.php下載位址。 Github專案:https://gist.github.com/JimWestergren/3053250#file-index-with-redis-php 
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快取效果了。
7.實際使用過程中發現以上程式碼會出現Wordpress首頁和分類沒有及時緩存,這裡再給出優化版本,出自http://www.88shenbogame.com/lightning-fast-wordpress-with-nginx- redis/。
8、功能差不多,主要有:登入時頁面不快取、除非刪除或重置否則不刪除快取頁面、登入時在任意URL後加上?c=y可以刪除整個網站快取、在任意URL後面加上?c=y可以清除此URL快取、allow_fopen被禁止也可以正常運作、發表評論時刪除該頁面快取。
9、index-with-redis.php最佳化版本的原始碼是: 
hexists($dkey, $ukey) && !$loggedin && !$submit) {     echo $redis->hget($dkey, $ukey);     if (!$debug) 退出(0);     $msg = '這是一個快取'; // 如果提交了評論或發出了清除頁面快取請求,則刪除 頁面快取} else if ($submit || substr($_SERVER['REQUEST_URI'], -4) == '?r=y') {     require('./wp-blog-header.php');     $redis ->hdel($dkey, $ukey);     $msg = '頁面快取已刪除'; // 刪除整個緩存,僅在登入時才有效} else if ($loggedin && substr($_SERVER['REQUEST_URI'], -4) == '?c=y') {     require('./wp-blog-header.php');     if ($redis->exists($dkey) ) {         $redis->del($dkey);         $msg = '網域快取已刷新';     } else {          $msg = '沒有要刷新記錄的快取; 不緩存任何內容} else if ($loggedin) {     require('./wp-blog-header.php');     $msg = '未快取'; // 快取頁面} else {     // 開啟輸出緩衝    ob_start() ;     require('./wp-blog-header.php');     // 取得輸出緩衝區的內容 $html = ob_get_contents(); '快取已設定'; $end = microtime(); // 取得結束執行時間// 顯示 如果啟用了偵錯,則顯示訊息if ($debug) {     echo $msg.': ';     迴聲t_exec($開始,$結束); } // 時間差異函數t_exec($start, $end) {     $t = (getmicrotime($end) - getmicrotime($start));     回傳回合($t,5); } // 取得時間函數getmicrotime($t) {     列表($usec,$sec)=爆炸(“”,$t);     返回((浮點)$usec +(浮點)$sec); } ?>

以上只是介紹了安裝Redis 儲存的PHP 腳本,包括各方面的內容,希望對PHP 教學有興趣的朋友有幫助。