Commit 449e7411 authored by Erick Hitter's avatar Erick Hitter

Spaces -> Tabs

parent 4f209302
......@@ -4,149 +4,149 @@
$start = microtime();
function getMicroTime($time) {
list($usec, $sec) = explode(" ", $time);
return ((float) $usec + (float) $sec);
list($usec, $sec) = explode(" ", $time);
return ((float) $usec + (float) $sec);
}
function refreshHasSecret($secret) {
return isset($_GET['refresh']) && $_GET['refresh'] == $secret;
return isset($_GET['refresh']) && $_GET['refresh'] == $secret;
}
function requestHasSecret($secret) {
return strpos($_SERVER['REQUEST_URI'],"refresh=${secret}")!==false;
return strpos($_SERVER['REQUEST_URI'],"refresh=${secret}")!==false;
}
function isRemotePageLoad($currentUrl, $websiteIp) {
return (isset($_SERVER['HTTP_REFERER'])
&& $_SERVER['HTTP_REFERER']== $currentUrl
&& $_SERVER['REQUEST_URI'] != '/'
&& $_SERVER['REMOTE_ADDR'] != $websiteIp);
return (isset($_SERVER['HTTP_REFERER'])
&& $_SERVER['HTTP_REFERER']== $currentUrl
&& $_SERVER['REQUEST_URI'] != '/'
&& $_SERVER['REMOTE_ADDR'] != $websiteIp);
}
function handleCDNRemoteAddressing() {
// so we don't confuse the cloudflare server
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
// so we don't confuse the cloudflare server
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) {
$_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
}
function getCleanUrl($secret) {
$replaceKeys = array("?refresh=${secret}","&refresh=${secret}");
$url = "http://${_SERVER['HTTP_HOST']}${_SERVER['REQUEST_URI']}";
$current_url = str_replace($replaceKeys, '', $url);
return $current_url;
$replaceKeys = array("?refresh=${secret}","&refresh=${secret}");
$url = "http://${_SERVER['HTTP_HOST']}${_SERVER['REQUEST_URI']}";
$current_url = str_replace($replaceKeys, '', $url);
return $current_url;
}
$debug = true;
$cache = true;
$websiteIp = '127.0.0.1';
$debug = true;
$cache = true;
$websiteIp = '127.0.0.1';
$reddis_server = '127.0.0.1';
$secret_string = 'changeme';
$current_url = getCleanUrl($secret_string);
$redis_key = md5($current_url);
$current_url = getCleanUrl($secret_string);
$redis_key = md5($current_url);
handleCDNRemoteAddressing();
if(!defined('WP_USE_THEMES')) {
define('WP_USE_THEMES', true);
define('WP_USE_THEMES', true);
}
try {
// check if PECL Extension is available
if (class_exists('Redis')) {
if ($debug) {
echo "<!-- Redis PECL module found -->\n";
}
$redis = new Redis();
// Sockets can be used as well. Documentation @ https://github.com/nicolasff/phpredis/#connection
$redis->connect($reddis_server);
} else { // Fallback to predis5.2.php
if ($debug) {
echo "<!-- using predis as a backup -->\n";
}
include_once("wp-content/plugins/wp-redis-cache/predis5.2.php"); //we need this to use Redis inside of PHP
$redis = new Predis_Client();
}
//Either manual refresh cache by adding ?refresh=secret_string after the URL or somebody posting a comment
if (refreshHasSecret($secret_string) || requestHasSecret($secret_string) || isRemotePageLoad($current_url, $websiteIp)) {
if ($debug) {
echo "<!-- manual refresh was required -->\n";
}
$redis->del($redis_key);
require('./wp-blog-header.php');
$unlimited = get_option('wp-redis-cache-debug',false);
$seconds_cache_redis = get_option('wp-redis-cache-seconds',43200);
// This page is cached, lets display it
} else if ($redis->exists($redis_key)) {
if ($debug) {
echo "<!-- serving page from cache: key: $redis_key -->\n";
}
$cache = true;
$html_of_page = $redis->get($redis_key);
echo $html_of_page;
// If the cache does not exist lets display the user the normal page without cache, and then fetch a new cache page
} else if ($_SERVER['REMOTE_ADDR'] != $websiteIp && strstr($current_url, 'preview=true') == false) {
if ($debug) {
echo "<!-- displaying page without cache -->\n";
}
$isPOST = ($_SERVER['REQUEST_METHOD'] === 'POST') ? 1 : 0;
$loggedIn = preg_match("/wordpress_logged_in/", var_export($_COOKIE, true));
if (!$isPOST && !$loggedIn) {
ob_start();
require('./wp-blog-header.php');
$html_of_page = ob_get_contents();
ob_end_clean();
echo $html_of_page;
if (!is_numeric($seconds_cache_redis)) {
$seconds_cache_redis = 43200;
}
// When a page displays after an "HTTP 404: Not Found" error occurs, do not cache
// When the search was used, do not cache
if ((!is_404()) and (!is_search())) {
if ($unlimited) {
$redis->set($redis_key, $html_of_page);
} else {
$redis->setex($redis_key, $seconds_cache_redis, $html_of_page);
}
}
} else { //either the user is logged in, or is posting a comment, show them uncached
require('./wp-blog-header.php');
}
} else if ($_SERVER['REMOTE_ADDR'] != $websiteIp && strstr($current_url, 'preview=true') == true) {
require('./wp-blog-header.php');
}
// else { // This is what your server should get if no cache exists //deprecated, as the ob_start() is cleaner
// require('./wp-blog-header.php');
// }
// check if PECL Extension is available
if (class_exists('Redis')) {
if ($debug) {
echo "<!-- Redis PECL module found -->\n";
}
$redis = new Redis();
// Sockets can be used as well. Documentation @ https://github.com/nicolasff/phpredis/#connection
$redis->connect($reddis_server);
} else { // Fallback to predis5.2.php
if ($debug) {
echo "<!-- using predis as a backup -->\n";
}
include_once("wp-content/plugins/wp-redis-cache/predis5.2.php"); //we need this to use Redis inside of PHP
$redis = new Predis_Client();
}
//Either manual refresh cache by adding ?refresh=secret_string after the URL or somebody posting a comment
if (refreshHasSecret($secret_string) || requestHasSecret($secret_string) || isRemotePageLoad($current_url, $websiteIp)) {
if ($debug) {
echo "<!-- manual refresh was required -->\n";
}
$redis->del($redis_key);
require('./wp-blog-header.php');
$unlimited = get_option('wp-redis-cache-debug',false);
$seconds_cache_redis = get_option('wp-redis-cache-seconds',43200);
// This page is cached, lets display it
} else if ($redis->exists($redis_key)) {
if ($debug) {
echo "<!-- serving page from cache: key: $redis_key -->\n";
}
$cache = true;
$html_of_page = $redis->get($redis_key);
echo $html_of_page;
// If the cache does not exist lets display the user the normal page without cache, and then fetch a new cache page
} else if ($_SERVER['REMOTE_ADDR'] != $websiteIp && strstr($current_url, 'preview=true') == false) {
if ($debug) {
echo "<!-- displaying page without cache -->\n";
}
$isPOST = ($_SERVER['REQUEST_METHOD'] === 'POST') ? 1 : 0;
$loggedIn = preg_match("/wordpress_logged_in/", var_export($_COOKIE, true));
if (!$isPOST && !$loggedIn) {
ob_start();
require('./wp-blog-header.php');
$html_of_page = ob_get_contents();
ob_end_clean();
echo $html_of_page;
if (!is_numeric($seconds_cache_redis)) {
$seconds_cache_redis = 43200;
}
// When a page displays after an "HTTP 404: Not Found" error occurs, do not cache
// When the search was used, do not cache
if ((!is_404()) and (!is_search())) {
if ($unlimited) {
$redis->set($redis_key, $html_of_page);
} else {
$redis->setex($redis_key, $seconds_cache_redis, $html_of_page);
}
}
} else { //either the user is logged in, or is posting a comment, show them uncached
require('./wp-blog-header.php');
}
} else if ($_SERVER['REMOTE_ADDR'] != $websiteIp && strstr($current_url, 'preview=true') == true) {
require('./wp-blog-header.php');
}
// else { // This is what your server should get if no cache exists //deprecated, as the ob_start() is cleaner
// require('./wp-blog-header.php');
// }
} catch (Exception $e) {
//require('./wp-blog-header.php');
echo "something went wrong";
//require('./wp-blog-header.php');
echo "something went wrong";
}
$end = microtime();
$time = (@getMicroTime($end) - @getMicroTime($start));
if ($debug) {
echo "<!-- Cache system by Benjamin Adams. Page generated in " . round($time, 5) . " seconds. -->\n";
echo "<!-- Site was cached = " . $cache . " -->\n";
if (isset($seconds_cache_redis)) {
echo "<!-- wp-redis-cache-seconds = " . $seconds_cache_redis . " -->\n";
}
echo "<!-- wp-redis-cache-secret = " . $secret_string . "-->\n";
echo "<!-- wp-redis-cache-ip = " . $websiteIp . "-->\n";
if (isset($unlimited)) {
echo "<!-- wp-redis-cache-unlimited = " . $unlimited . "-->\n";
}
echo "<!-- wp-redis-cache-debug = " . $debug . "-->\n";
echo "<!-- Cache system by Benjamin Adams. Page generated in " . round($time, 5) . " seconds. -->\n";
echo "<!-- Site was cached = " . $cache . " -->\n";
if (isset($seconds_cache_redis)) {
echo "<!-- wp-redis-cache-seconds = " . $seconds_cache_redis . " -->\n";
}
echo "<!-- wp-redis-cache-secret = " . $secret_string . "-->\n";
echo "<!-- wp-redis-cache-ip = " . $websiteIp . "-->\n";
if (isset($unlimited)) {
echo "<!-- wp-redis-cache-unlimited = " . $unlimited . "-->\n";
}
echo "<!-- wp-redis-cache-debug = " . $debug . "-->\n";
}
......@@ -99,18 +99,18 @@ We do this because WordPress is no longer in charge of displaying our posts. Re
/* Copyright 2013 Benjamin Adams (email : ben@dudelol.com)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
......@@ -119,37 +119,37 @@ We do this because WordPress is no longer in charge of displaying our posts. Re
add_action('admin_menu', 'add_redis_interface');
function add_redis_interface() {
add_options_page('WP Redis Cache', 'WP Redis Cache', '8', 'functions', 'edit_redis_options');
add_options_page('WP Redis Cache', 'WP Redis Cache', '8', 'functions', 'edit_redis_options');
}
function edit_redis_options() {
?>
<div class='wrap'>
<h2>WP-Redis Options</h2>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options') ?>
?>
<div class='wrap'>
<h2>WP-Redis Options</h2>
<form method="post" action="options.php">
<?php wp_nonce_field('update-options') ?>
<p>This plugin does not work out of the box and requires additional steps.<br />
Please follow these install instructions: <a target='_blank' href='https://github.com/BenjaminAdams/wp-redis-cache'>https://github.com/BenjaminAdams/wp-redis-cache</a></p>
<p>If you do not have Redis installed on your machine this will NOT work! </p>
<p><strong>Seconds of Caching:</strong><br />
<p><strong>Seconds of Caching:</strong><br />
How many seconds would you like to cache? *Recommended 12 hours or 43200 seconds <br />
<input type="text" name="wp-redis-cache-seconds" size="45" value="<?php echo get_option('wp-redis-cache-seconds'); ?>" /></p>
<input type="text" name="wp-redis-cache-seconds" size="45" value="<?php echo get_option('wp-redis-cache-seconds'); ?>" /></p>
<p><strong>Cache unlimeted:</strong><br />
<p><strong>Cache unlimeted:</strong><br />
If this options set the cache never expire. This option overiedes the setting "Seconds of Caching"<br />
<input type="checkbox" name="wp-redis-cache-unlimited" size="45" value="true" <?php checked('true', get_option('wp-redis-cache-unlimited')); ?>/></p>
<input type="checkbox" name="wp-redis-cache-unlimited" size="45" value="true" <?php checked('true', get_option('wp-redis-cache-unlimited')); ?>/></p>
<p><input type="submit" name="Submit" value="Update Options" /></p>
<p><input type="submit" name="Submit" value="Update Options" /></p>
<p><input type="button" id="WPRedisClearCache" name="WPRedisClearCache" value="Clear Cache"></p>
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="wp-redis-cache-seconds,wp-redis-cache-unlimited" />
<input type="hidden" name="action" value="update" />
<input type="hidden" name="page_options" value="wp-redis-cache-seconds,wp-redis-cache-unlimited" />
</form>
</div>
<?php
</form>
</div>
<?php
}
include('cache.php');
\ No newline at end of file
This diff is collapsed.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment