From 858217e694d910e45afd99d89393d514687c1136 Mon Sep 17 00:00:00 2001 From: david yang Date: Wed, 29 Mar 2017 14:49:12 -0400 Subject: [PATCH 1/2] Add an ability to prevent caching file by file --- services/Htmlcache_HtmlcacheService.php | 30 ++++++++++++++++++------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/services/Htmlcache_HtmlcacheService.php b/services/Htmlcache_HtmlcacheService.php index ad34407..4d816b7 100644 --- a/services/Htmlcache_HtmlcacheService.php +++ b/services/Htmlcache_HtmlcacheService.php @@ -33,7 +33,7 @@ public function checkForCacheFile() ob_start(); } } - + public function canCreateCacheFile() { // Skip if we're running in devMode @@ -58,7 +58,7 @@ public function canCreateCacheFile() if (craft()->request->isLivePreview()) { return false; } - + // Skip if it's a post/ajax request if (!craft()->request->isGetRequest()) { return false; @@ -66,10 +66,24 @@ public function canCreateCacheFile() return true; } - + + public function header_sent($header) { + $headers = headers_list(); + $header = trim($header,': '); + $result = false; + + foreach ($headers as $hdr) { + if (stripos($hdr, $header) > -1) { + $result = true; + } + } + return $result; + } + public function createCacheFile() { - if ($this->canCreateCacheFile() && http_response_code() == 200) { + // if ($this->canCreateCacheFile() && http_response_code() == 200) { + if ($this->canCreateCacheFile() && !$this->header_sent("No-Cache") && http_response_code() == 200) { $content = ob_get_contents(); ob_end_flush(); $file = $this->getCacheFileName(); @@ -83,7 +97,7 @@ public function createCacheFile() } } } - + public function clearCacheFiles() { // @todo split between all/single cache file @@ -92,17 +106,17 @@ public function clearCacheFiles() } return true; } - + private function getCacheFileName($withDirectory = true) { return \htmlcache_filename($withDirectory); } - + private function getCacheFileDirectory() { return \htmlcache_directory(); } - + public function log($settings, $errors, $level) { // Firstly, store in plugin log file (use $level to control log level) From c5274651b0ce86cd84009ff7a91a2f2cc3b22536 Mon Sep 17 00:00:00 2001 From: david yang Date: Wed, 29 Mar 2017 15:03:16 -0400 Subject: [PATCH 2/2] Update Htmlcache_HtmlcacheService.php --- services/Htmlcache_HtmlcacheService.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/services/Htmlcache_HtmlcacheService.php b/services/Htmlcache_HtmlcacheService.php index 4d816b7..a1ac2c2 100644 --- a/services/Htmlcache_HtmlcacheService.php +++ b/services/Htmlcache_HtmlcacheService.php @@ -73,7 +73,7 @@ public function header_sent($header) { $result = false; foreach ($headers as $hdr) { - if (stripos($hdr, $header) > -1) { + if (strpos($hdr, $header) !== false) { $result = true; } } @@ -82,7 +82,6 @@ public function header_sent($header) { public function createCacheFile() { - // if ($this->canCreateCacheFile() && http_response_code() == 200) { if ($this->canCreateCacheFile() && !$this->header_sent("No-Cache") && http_response_code() == 200) { $content = ob_get_contents(); ob_end_flush();