上面的太长了,俺简化的
<? 
//gzdoc.php
ob_start();   
ob_implicit_flush(0);   
function GzDocOut(){ 
$gziplevel=9; 
$ENCODING = "gzip"; 
$Contents = ob_get_contents(); 
$Contents .= "\n<!-- Use compress $ENCODING -->\n"; 
ob_end_clean(); 
header("Content-Encoding: $ENCODING"); 
print pack('cccccccc',0x1f,0x8b,0x08,0x00,0x00,0x00,0x00,0x00); 
$Size = strlen($Contents); 
$Crc = crc32($Contents); 
$Contents = gzcompress($Contents,$gziplevel); 
$Contents = substr($Contents, 0, strlen($Contents) - 4); 
print  $Contents; 
print pack('V',$Crc); 
print pack('V',$Size); 
exit; 

?> <?php
//test.php
include_once("./gzdoc.php");
echo "test";
GzDocOut();
?> 还有一个函数形式的。function gzipOutput($text,$level=1){
    $returntext=$text;
    $encoding = false;
    if (function_exists("crc32") and function_exists("gzcompress") ){
        if (strpos(" ".$_SERVER['HTTP_ACCEPT_ENCODING'],"x-gzip")) {
            $encoding = "x-gzip";
        }
        if (strpos(" ".$_SERVER['HTTP_ACCEPT_ENCODING'],"gzip")) {
            $encoding = "gzip";
        }
        if ($encoding) {
            header("Content-Encoding: $encoding");
            $size = strlen($text);
            $crc = crc32($text);
            $returntext = "\x1f\x8b\x08\x00\x00\x00\x00\x00";
            $returntext .= substr(gzcompress($text,$level),0,-4);
            $returntext .= pack("V",$crc);
            $returntext .= pack("V",$size);
        }
    }
    return $returntext;
}转贴一篇文章:
在开始之前,要保证你的 PHP4 编译时支持 Zlib。 
首先,初始化输出缓冲: 
<?php 
ob_start(); 
ob_implicit_flush(0); 
?> 
然后产生所有的输出内容。 
<?php 
print("本例为压缩输出!"); 
?> 页面生成以后,采用: 
<?php 
$contents = ob_get_contents(); 
ob_end_clean(); 
?> 
还要检查浏览器是否支持压缩数据,我们采用在变量 $HTTP_ACCEPT_ENCODING 中检查 "gzip, deflate"的办法: 
<?php 
if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) { 
// 产生 gzip 后的内容 
} else { 
echo $contents; 

?> 
下面我们分析怎样产生 gzip 输出: 
<?php 
// 告诉浏览器下面接收的是 gzip 数据。 
header("Content-Encoding: gzip"); 
// 显示 gzip 文件的文件头 
// 只要一次就够了 
echo "x1fx8bx08x00x00x00x00x00"; 
// 计算长度和 CRC 校验码 
$Size = strlen($contents); 
$Crc = crc32($contents); 
// 压缩数据 
$contents = gzcompress($contents, 9); 
// 不能直接在这里输出内容,因为还没有写入 CRC 呢! 
$contents = substr($contents, 0, strlen($contents) - 4); 
echo $contents; 
gzip_PrintFourChars($Crc); 
gzip_PrintFourChars($Size); 
function gzip_PrintFourChars($Val) { 
for ($i = 0; $i < 4; $i ++) { 
echo chr($Val % 256); 
$Val = floor($Val / 256); 


?>