diff --git a/class2.php b/class2.php index 68b236839..cef303ce2 100644 --- a/class2.php +++ b/class2.php @@ -2295,6 +2295,7 @@ class e_http_header private $compression_browser_support = false; private $compression_server_support = false; private $headers = array(); + private $length = 0; function __construct() @@ -2304,20 +2305,55 @@ class e_http_header $this->compression_browser_support = true; } - if(ini_get("zlib.output_compression") == '' && function_exists("gzencode")) + if(ini_get("zlib.output_compression")=='' && function_exists("gzencode")) { $this->compression_server_support = true; } - - $this->compress_output = varset(e107::getPref('compress_output'),false); + + if($this->compression_server_support == true && $this->compression_browser_support == true) + { + $this->compress_output = varset(e107::getPref('compress_output'),false); + } + else + { + $this->compress_output = false; + } + } function setContent($content) { - $this->etag = md5($content); - $this->content = $content; + + if($content == 'buffer') + { + $this->length = ob_get_length(); + $this->content = ob_get_clean(); + + } + else + { + $this->content = $content; + $this->length = strlen($content); + } + + $this->etag = md5($this->content); + + //print_a($this->length); + + // return $this->content; + + } + + + /** + * Return Content (with or without encoding) + * @return mixed + */ + function getOutput() + { + return $this->content; } function setHeader($header, $force=false, $response_code=null) @@ -2327,17 +2363,23 @@ class e_http_header header($header, $force, $response_code); } - function debug() + function debug() // needs to be disabled if PHP gzip is to work { + if(!ADMIN) + { + return null; + } + - echo "

Server Headers

"; + $text = "

Server Headers

"; $server = getallheaders(); ksort($server); - print_a($server); - echo "

e107 Headers

"; + $text .= print_a($server,true); + $text .= "

e107 Headers

"; ksort($this->headers); - print_a($this->headers); - var_dump($this->compress_output); + $text .= print_a($this->headers,true); + $text .= "

Compress Output

"; + $text .= print_a($this->compress_output,true); $server = array(); foreach($_SERVER as $k=>$v) @@ -2347,8 +2389,21 @@ class e_http_header $server[$k] = $v; } } - echo "

_SERVER

"; - print_a($server); + + $text .= "

_SERVER

"; + $text .= "

zlib.output_compression

"; + $text .= print_a(ini_get("zlib.output_compression"),true); + + + $text .=print_a($server,true); + + if($this->compress_output == true) + { + + $text = gzencode($text, $this->compression_level); + } + + echo $text; } @@ -2390,27 +2445,29 @@ class e_http_header } - if($this->compress_out != false && $this->compression_server_support == true && $this->compression_browser_support == true) + if($this->compress_output != false) { // $this->setHeader("ETag: \"{$this->etag}-gzip\""); $this->setHeader('ETag: "'.$this->etag.'-gzip"', true); - $page = gzencode($this->content, $this->compression_level); - $this->setHeader("Content-Encoding: gzip", true); - $this->setHeader("Content-Length: ".strlen($page), true); + $this->content = gzencode($this->content, $this->compression_level); + $this->setHeader('Content-Encoding: gzip', true); + $this->setHeader("Content-Length: ".$this->length, true); } else { + +/* if($this->compression_browser_support ==true) { $this->setHeader('ETag: "'.$this->etag.'-gzip"', true); } else - { + {*/ $this->setHeader('ETag: "'.$this->etag.'"', true); - } + // } - $this->setHeader("Content-Length: ".strlen($this->content), true); + $this->setHeader("Content-Length: ".$this->length, true); } if(defset('X-POWERED-BY') !== false) @@ -2422,9 +2479,9 @@ class e_http_header { $this->setHeader('Vary: Accept-Encoding'); } - else + else { - $this->setHeader('Vary: Accept'); + $this->setHeader('Vary: Accept'); } // should come after the Etag header diff --git a/e107_admin/footer.php b/e107_admin/footer.php index 2f8abbcbf..931419ddb 100644 --- a/e107_admin/footer.php +++ b/e107_admin/footer.php @@ -411,19 +411,36 @@ if($tmp1) // Shutdown $e107->destruct(); - +/* if($tmp) { $page = str_replace($tmp['search'], $tmp['replace'], ob_get_clean()); } else -{ - $page = ob_get_clean(); -} +{*/ + +//$length = ob_get_length(); +// $page = ob_get_clean(); +// } unset($tmp1, $tmp1); +// $page = ob_get_clean(); + +// New - see class2.php +$ehd = new e_http_header; +$ehd->setContent('buffer'); +$ehd->send(); +$page = $ehd->getOutput(); +// $ehd->debug(); + +// real output +echo $page; + + +/* + $etag = md5($page); @@ -454,11 +471,11 @@ if(!defined('e_NOCACHE')) $pref['compression_level'] = 6; if (strstr(varset($_SERVER["HTTP_ACCEPT_ENCODING"], ""), "gzip")) { - $browser_support = true; +// $browser_support = true; } if (ini_get("zlib.output_compression") == false && function_exists("gzencode")) { - $server_support = true; +// $server_support = true; } if (varset($pref['compress_output'], false) && $server_support == true && $browser_support == true) { @@ -482,7 +499,7 @@ else header("Content-Length: ".strlen($page), true); echo $page; -} +}*/ unset($In_e107_Footer); $e107_Clean_Exit = TRUE; // For registered shutdown function -- let it know all is well! diff --git a/e107_core/templates/footer_default.php b/e107_core/templates/footer_default.php index d62442368..b2031ddea 100644 --- a/e107_core/templates/footer_default.php +++ b/e107_core/templates/footer_default.php @@ -380,14 +380,22 @@ $e107->destruct(); // // I Send the buffered page data, along with appropriate headers // -$page = ob_get_clean(); +//$length = ob_get_length(); +//$page = ob_get_clean(); + + // New - see class2.php $ehd = new e_http_header; -$ehd->setContent($page); +$ehd->setContent('buffer'); $ehd->send(); // $ehd->debug(); +$page = $ehd->getOutput(); +//$ehd->setContent($page); +//$ehd->send($length); + + // real output echo $page;