note 51949 added to function.ob-gzhandler
| From: | m at rtij dot nl | Date: | Sat, 16 Apr 2005 12:29:45 +0000 |
| Subject: | note 51949 added to function.ob-gzhandler | ||
| Groups: | php.notes | ||
| Request: | Send a blank email to php-notes+get-88083@lists.php.net to get a copy of this message | ||
All versions of MSIE have a bug where they don't cache gzipd contents. If your application
depends on caching, this is something to keep in mind. In the end, I did:
<?php
// These are so benificial, they default to true.
if (!isset($use_page_cache))
$use_page_cache = 1;
if (!isset($use_compression))
$use_compression = 1;
// Add browsers here as we must detect them. Opera is an oddball, if we don't detect
// it specifically, it will turn up as MSIE
$browser="other";
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$agent = $_SERVER['HTTP_USER_AGENT'];
if (eregi("opera",$agent)){
$browser="opera";
}elseif(eregi("msie",$agent)){
$browser="msie";
}
}
if ($use_compression && !( $use_page_cache && $browser == "msie")) {
// Turn on compression, makes quite a difference in bandwith usage.
// However, MSIE (all versions) have a bug with compression and caching. So for MSIE
// it's either compression or caching. We choose caching.
ob_start('ob_gzhandler');
}
session_cache_limiter("must-revalidate");
session_start();
// ... put stuff in $content ...
if ($use_page_cache) {
// MD5 is slow, however with a fast server (PIII or better) we should be OK
$hash = md5($content);
$headers = getallheaders();
if (isset($headers['If-None-Match']) && ereg($hash,
$headers['If-None-Match']))
{
header('HTTP/1.1 304 Not Modified');
exit;
}
header("ETag: \"$hash\"");
}
print $content;
?>
----
Manual Page -- http://www.php.net/manual/en/function.ob-gzhandler.php
Edit -- http://master.php.net/manage/user-notes.php?action=edit+51949
Delete: added to the manual -- http://master.php.net/manage/user-notes.php?action=delete+51949&report=yes&reason=added+to+the+manual
Delete: bad code -- http://master.php.net/manage/user-notes.php?action=delete+51949&report=yes&reason=bad+code
Delete: spam -- http://master.php.net/manage/user-notes.php?action=delete+51949&report=yes&reason=spam
Delete: useless -- http://master.php.net/manage/user-notes.php?action=delete+51949&report=yes&reason=useless
Delete: other reasons -- http://master.php.net/manage/user-notes.php?action=delete+51949&report=yes
Reject -- http://master.php.net/manage/user-notes.php?action=reject+51949&report=yes
Search -- http://master.php.net/manage/user-notes.php