From c2f3786d90788b2de74f615bae06a161e4ee7237 Mon Sep 17 00:00:00 2001 From: CaMer0n Date: Fri, 3 Sep 2010 22:02:30 +0000 Subject: [PATCH] eTag validation fix and If-None-Match support. --- e107_themes/templates/footer_default.php | 29 ++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/e107_themes/templates/footer_default.php b/e107_themes/templates/footer_default.php index 1460fec19..e3bf1bc32 100644 --- a/e107_themes/templates/footer_default.php +++ b/e107_themes/templates/footer_default.php @@ -289,8 +289,23 @@ echo ""; $page = ob_get_clean(); $etag = md5($page); -header("Cache-Control: must-revalidate"); -header("ETag: \"{$etag}\""); + + +if (isset($_SERVER['HTTP_IF_NONE_MATCH'])) +{ + $IF_NONE_MATCH = str_replace('"','',$_SERVER['HTTP_IF_NONE_MATCH']); + + if($IF_NONE_MATCH == $etag || ($IF_NONE_MATCH == ($etag."-gzip"))) + { + header('HTTP/1.1 304 Not Modified'); + exit(); + } +} + +if(!defined('e_NOCACHE')) +{ + header("Cache-Control: must-revalidate"); +} $pref['compression_level'] = 6; $browser_support = FALSE; @@ -306,6 +321,7 @@ if(ini_get("zlib.output_compression") == '' && function_exists("gzencode")) if(varset($pref['compress_output'],false) && $server_support == true && $browser_support == true) { $level = intval($pref['compression_level']); + header("ETag: \"{$etag}-gzip\""); $page = gzencode($page, $level); header("Content-Encoding: gzip", true); header("Content-Length: ".strlen($page), true); @@ -313,6 +329,15 @@ if(varset($pref['compress_output'],false) && $server_support == true && $browser } else { + if($browser_support==TRUE) + { + header("ETag: \"{$etag}-gzip\""); + } + else + { + header("ETag: \"{$etag}\""); + } + header("Content-Length: ".strlen($page), true); echo $page; }