redis 页面缓存html,加速WordPress技巧:Redis缓存输出的HTML页面

// Change these two variables:

$seconds_of_caching = 60*60*24*7; // 7 days.

$ip_of_this_website = '204.62.14.112';

/*

- This file is written by Jim Westergren, copyright all rights reserved.

- See more here: www.jimwestergren.com/wordpress-with-redis-as-a-frontend-cache/

- The code is free for everyone to use how they want but please mention my name and link to my article when writing about this.

- Change $ip_of_this_website to the IP of your website above.

- Add ?refresh=yes to the end of a URL to refresh it's cache

- You can also enter the redis client via the command prompt with the command "redis-cli" and then remove all cache with the command "flushdb".

*/

// Very necessary if you use Cloudfare:

if (isset($_SERVER'HTTP_CF_CONNECTING_IP')) {

$_SERVER'REMOTE_ADDR' = $_SERVER'HTTP_CF_CONNECTING_IP';

}

// This is from WordPress:

define('WP_USE_THEMES', true);

// Start the timer:

function getmicrotime($t) {

list($usec, $sec) = explode(" ",$t);

return ((float)$usec + (float)$sec);

}

$start = microtime();

// Initiate redis and the PHP client for redis:

include("predis.php");

$redis = new Predis\Client('');

// few variables:

$current_page_url = "http://".$_SERVER'HTTP_HOST'.$_SERVER'REQUEST_URI';

$current_page_url = str_replace('?refresh=yes', '', $current_page_url);

$redis_key = md5($current_page_url);

// This first case is either manual refresh cache by adding ?refresh=yes after the URL or somebody posting a comment

if (isset($_GET'refresh') || substr($_SERVER'REQUEST_URI', -12) == '?refresh=yes' || ($_SERVER'HTTP_REFERER' == $current_page_url && $_SERVER'REQUEST_URI' != '/' && $_SERVER'REMOTE_ADDR' != $ip_of_this_website)) {

require('./wp-blog-header.php');

$redis->del($redis_key);

// Second case: cache exist in redis, let's display it

} else if ($redis->exists($redis_key)) {

$html_of_current_page = $redis->get($redis_key);

echo $html_of_current_page;

echo "";

// third: a normal visitor without cache. And do not cache a preview page from the wp-admin:

} else if ($_SERVER'REMOTE_ADDR' != $ip_of_this_website && strstr($current_page_url, 'preview=true') == false) {

require('./wp-blog-header.php');

$html_of_current_page = file_get_contents($current_page_url);

$redis->setex($redis_key, $seconds_of_caching, $html_of_current_page);

echo "";

// last case: the normal WordPress. Should only be called with file_get_contents:

} else {

require('./wp-blog-header.php');

}

// Let's display some page generation time (note: CloudFlare may strip out comments):

$end = microtime();

$t2 = (getmicrotime($end) - getmicrotime($start));

if ($_SERVER'REMOTE_ADDR' != $ip_of_this_website) {

echo "";

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值