>백엔드 개발 >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();   // 타이밍 페이지 실행 시작  // 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 "

"; } // 시간 차이 function t_exec($start, $end) { $t = (getmicrotime($end) - getmicrotime($start)) return round($t,5) } // 시간 가져오기 function getmicrotime($ t) { list($usec, $sec) =exploit(" ",$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로 설정하세요.

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와 함께 사용할 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.