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(); // 타이밍 페이지 실행 시작 // cloudflare인 경우
활성화됨 if ($cf) { if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; } } // wp에서 정의('WP_USE_THEMES', true); // predis 초기화 include("predis.php"); $redis = 새로운 PredisClient('');
// 초기화 vars $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($도메인); $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 = '아니요
플러시할 캐시'; } // 로그인한 경우 아무것도 캐시하지 않습니다. } 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 = 마이크로타임(); // 종료 실행 시간 가져오기 // 디버그가 활성화되면 메시지 표시 if ($debug) { echo $msg.': '; echo t_exec($start, $end);
} 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 "
".t_exec($start, $end)." sec
2. 대체 다운로드: index-with-redis.php 다운로드 주소. Github 프로젝트: https://gist.github.com/JimWestergren/3053250#file-index-with-redis-php
3. cloudflare를 사용하는 경우 cf = 1로 설정하세요. 페이지 스크립트 실행 시간과 캐시 로딩 시간을 보려면 $debug = 1로 설정하세요.
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 = '플러시할 캐시가 없음'; } // 기록된 경우
in에서는 아무것도 캐시하지 않습니다. } 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; // html 콘텐츠를 redis 캐시에 저장 $redis->hset($dkey, $ukey, $html); $msg = '캐시가 설정되었습니다'; } $end = 마이크로타임(); // 종료 실행 시간을 얻음 // 표시
디버그가 활성화된 경우 메시지 if ($debug) { echo $msg.': '; echo t_exec($start, $end); } // 시간 차이 함수 t_exec($start, $end) { $t = (getmicrotime($end) - getmicrotime($start)); return round($t,5); } // 시간 가져오기 함수 getmicrotime($t)
{ list($usec, $sec) = 폭발(" ",$t); return ((float)$usec + (float)$sec); } ?>
以上就介绍了 安装Redis는 이전에 PHP를 사용하여 PHP 방식을 사용하고 있으며, 包括了방식의 PHPPHP와 함께 사용할 수 있습니다.