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
if (!isset($use_page_cache))
$use_page_cache = 1;
if (!isset($use_compression))
$use_compression = 1;
$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")) {
ob_start('ob_gzhandler');
}
session_cache_limiter("must-revalidate");
session_start();
if ($use_page_cache) {
$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;
?>