diff --git a/index-wp-redis.php b/index-wp-redis.php
index ade13337f45e0caed28abb98d50294228d6054ba..bae2130578e0b853882e5d58bf2401d207d34907 100644
--- a/index-wp-redis.php
+++ b/index-wp-redis.php
@@ -155,6 +155,15 @@ function wp_redis_cache_connect_redis() {
 	return $redis;
 }
 
+/**
+ * Shortcut to load WP
+ *
+ * @return null
+ */
+function wp_redis_cache_load_wp() {
+	require_once dirname( __FILE__ ) . '/wp-blog-header.php';
+}
+
 /**
  * BEGIN CACHING LOGIC
  */
@@ -171,11 +180,19 @@ try {
 	// Establish connection with Redis server
 	$redis = wp_redis_cache_connect_redis();
 
+	// Whether we need to load WP
+	$load_wp = true;
+
 	// Relevant details on the current request
 	$is_post   = (bool) 'POST' === $_SERVER['REQUEST_METHOD'];
 	$logged_in = (bool) preg_match( "#(wordpress_(logged|sec)|comment_author)#", var_export( $_COOKIE, true ) );
 
-	//Either manual refresh cache by adding ?refresh=secret_string after the URL or somebody posting a comment
+	if ( $GLOBALS['wp_redis_cache_config']['debug'] ) {
+		echo "<!-- POST request: . " . ( $is_post ? 'yes' : 'no' ) . "-->\n";
+		echo "<!-- Logged in: . " . ( $logged_in ? 'yes' : 'no' ) . "-->\n";
+	}
+
+	// Refresh request, deletes cache: either manual refresh cache by adding ?refresh=secret_string after the URL or somebody posting a comment
 	if ( wp_redis_cache_refresh_has_secret( $GLOBALS['wp_redis_cache_config']['secret_string'] ) || wp_redis_cache_request_has_secret( $GLOBALS['wp_redis_cache_config']['secret_string'] ) || wp_redis_cache_is_remote_page_load( $GLOBALS['wp_redis_cache_config']['current_url'], $GLOBALS['wp_redis_cache_config']['server_ip'] ) ) {
 		if ( $GLOBALS['wp_redis_cache_config']['debug'] ) {
 			echo "<!-- manual refresh was required -->\n";
@@ -183,73 +200,80 @@ try {
 
 		$redis->del( $GLOBALS['wp_redis_cache_config']['redis_key'] );
 
-		require dirname( __FILE__ ) . '/wp-blog-header.php';
-	// This page is cached, lets display it
+		// wp_redis_cache_load_wp();
+	// This page is cached, the user isn't logged in, and it isn't a POST request, so let's use the cache
 	} elseif ( ! $is_post && ! $logged_in && $redis->exists( $GLOBALS['wp_redis_cache_config']['redis_key'] ) ) {
 		if ( $GLOBALS['wp_redis_cache_config']['debug'] ) {
 			echo "<!-- serving page from cache: key: " . $GLOBALS['wp_redis_cache_config']['redis_key'] . " -->\n";
 		}
 
+		// Page is served from cache, so we don't need WP
+		$load_wp = false;
 		$GLOBALS['wp_redis_cache_config']['cached'] = true;
 
-		$html_of_page = trim( $redis->get( $GLOBALS['wp_redis_cache_config']['redis_key'] ) );
-		echo $html_of_page;
-
+		echo trim( $redis->get( $GLOBALS['wp_redis_cache_config']['redis_key'] ) );
 	// If the cache does not exist lets display the user the normal page without cache, and then fetch a new cache page
-	} elseif ( $_SERVER['REMOTE_ADDR'] != $GLOBALS['wp_redis_cache_config']['server_ip'] && false === strstr( $GLOBALS['wp_redis_cache_config']['current_url'], 'preview=true' ) ) {
-		if ( $GLOBALS['wp_redis_cache_config']['debug'] ) {
-			echo "<!-- displaying page without cache -->\n";
-		}
-
-		if ( $GLOBALS['wp_redis_cache_config']['debug'] ) {
-			echo "<!-- POST request: . " . ( $is_post ? 'yes' : 'no' ) . "-->\n";
-			echo "<!-- Logged in: . " . ( $logged_in ? 'yes' : 'no' ) . "-->\n";
-		}
-
-		if ( ! $is_post && ! $logged_in ) {
-			ob_start();
-			require dirname( __FILE__ ) . '/wp-blog-header.php';
-			$html_of_page = trim( ob_get_clean() );
-			echo $html_of_page;
-
-			// 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() && ! is_search() ) {
-				if ( isset( $GLOBALS['wp_redis_cache_config']['unlimited'] ) ) {
-					$unlimited = $GLOBALS['wp_redis_cache_config']['unlimited'];
-				} else {
-					$unlimited = (bool) get_option( 'wp-redis-cache-debug', false );
-					$GLOBALS['wp_redis_cache_config']['unlimited'] = $unlimited;
-				}
+	} elseif ( $_SERVER['REMOTE_ADDR'] != $GLOBALS['wp_redis_cache_config']['server_ip'] ) {
+		if ( false === strstr( $GLOBALS['wp_redis_cache_config']['current_url'], 'preview=true' ) ) {
+			if ( $GLOBALS['wp_redis_cache_config']['debug'] ) {
+				echo "<!-- displaying page without cache -->\n";
+			}
 
-				// Determine how long to cache the page for and set the cache
-				if ( $unlimited ) {
-					$redis->set( $GLOBALS['wp_redis_cache_config']['redis_key'], $html_of_page );
-				} else {
-					if ( isset( $GLOBALS['wp_redis_cache_config']['cache_duration'] ) ) {
-						$cache_duration = $GLOBALS['wp_redis_cache_config']['cache_duration'];
+			// If user isn't logged in and this isn't a post request, render the requested page and cache if appropriate.
+			if ( ! $is_post && ! $logged_in ) {
+				// We load WP to generate the cached output, so no need to load again
+				$load_wp = false;
+
+				// Render page into an output buffer and display
+				ob_start();
+				wp_redis_cache_load_wp();
+				$markup_to_cache = trim( ob_get_clean() );
+				echo $markup_to_cache;
+
+				// Cache rendered page if appropriate
+				if ( ! is_404() && ! is_search() ) {
+					// Is unlimited cache life requested?
+					if ( isset( $GLOBALS['wp_redis_cache_config']['unlimited'] ) ) {
+						$unlimited = $GLOBALS['wp_redis_cache_config']['unlimited'];
 					} else {
-						$cache_duration = (int) get_option( 'wp-redis-cache-seconds', 43200 );
-						$GLOBALS['wp_redis_cache_config']['cache_duration'] = $cache_duration;
+						$unlimited = (bool) get_option( 'wp-redis-cache-debug', false );
+						$GLOBALS['wp_redis_cache_config']['unlimited'] = $unlimited;
 					}
 
-					if ( ! is_numeric( $cache_duration ) ) {
-						$cache_duration = $GLOBALS['wp_redis_cache_config']['cache_duration'] = 43200;
+					// Cache the page for the chosen duration
+					if ( $unlimited ) {
+						$redis->set( $GLOBALS['wp_redis_cache_config']['redis_key'], $markup_to_cache );
+					} else {
+						if ( isset( $GLOBALS['wp_redis_cache_config']['cache_duration'] ) ) {
+							$cache_duration = $GLOBALS['wp_redis_cache_config']['cache_duration'];
+						} else {
+							$cache_duration = (int) get_option( 'wp-redis-cache-seconds', 43200 );
+							$GLOBALS['wp_redis_cache_config']['cache_duration'] = $cache_duration;
+						}
+
+						if ( ! is_numeric( $cache_duration ) ) {
+							$cache_duration = $GLOBALS['wp_redis_cache_config']['cache_duration'] = 43200;
+						}
+
+						$redis->setex( $GLOBALS['wp_redis_cache_config']['redis_key'], $cache_duration, $markup_to_cache );
 					}
-
-					$redis->setex( $GLOBALS['wp_redis_cache_config']['redis_key'], $cache_duration, $html_of_page );
 				}
-			}
-		} else { //either the user is logged in, or is posting a comment, show them uncached
-			require dirname( __FILE__ ) . '/wp-blog-header.php';
-		}
-	} elseif ( $_SERVER['REMOTE_ADDR'] != $GLOBALS['wp_redis_cache_config']['server_ip'] && true === strstr( $GLOBALS['wp_redis_cache_config']['current_url'], 'preview=true' ) ) {
-		require dirname( __FILE__ ) . '/wp-blog-header.php';
-	} else {
-		require dirname( __FILE__ ) . '/wp-blog-header.php';
+			} /*else {
+				wp_redis_cache_load_wp();
+			}*/
+		} /*else {
+			wp_redis_cache_load_wp();
+		}*/
+	} /*else {
+		wp_redis_cache_load_wp();
+	}*/
+
+	// The current request wasn't served from cache or isn't cacheable, so we pass off to WP
+	if ( $load_wp ) {
+		wp_redis_cache_load_wp();
 	}
 } catch ( Exception $e ) {
-	require dirname( __FILE__ ) . '/wp-blog-header.php';
+	wp_redis_cache_load_wp();
 	wp_redis_cache_exception_handler( $e );
 }