400-696-8028

加速你的页面——数据压缩

长沙北大青鸟作者:科泰校区匿名

摘要:最近偶的网站越来越慢,不是脚本执行时间慢,是网络传输速度慢。知道http1.1支持gzip编码的数据,所以试试将自己的页面压缩压缩...(在php.ini可以设置,直接输出为gzip编码,不过没试过)上网搜到一个gzdoc.php,改了

最近偶的网站越来越慢,不是脚本执行时间慢,是网络传输速度慢。
知道http1.1支持gzip编码的数据,所以试试将自己的页面压缩压缩...
(在php.ini可以设置,直接输出为gzip编码,不过没试过)

上网搜到一个gzdoc.php,改了改,让大家共同琢磨琢磨。
<?php
ob_start();//打开输出缓冲
ob_implicit_flush(0);//

//*****************************************************************//
//函数名:canGzip()
//作用:检查客户浏览器是否支持gzip,x-gzip编码
//参数:
//返回值:支持的编码类型"gzip", "x-gzip", 返回false代表不支持
//*****************************************************************//
function canGzip()
{
 //if (headers_sent() || connection_status)
        //return false;

 if (strpos('King'.$_SERVER["HTTP_ACCEPT_ENCODING"], 'gzip') !== false)
  return "gzip";
 
 if (strpos('King'.$_SERVER["HTTP_ACCEPT_ENCODING"], 'x-gzip') !== false)
  return "x-gzip";

 return false;
}

//*****************************************************************//
//函数名:doGzipOut($level, $debug)
//作用:对输出缓冲的数据进行压缩并输出
//参数:$level代表压缩级别, 0 = 不压缩, 9 = 最大压缩率
//     $debug代表是否输出调试信息, 1 = 输出, 0 = 不输出
//返回值:
//*****************************************************************//
function doGzipOut($level = 1, $debug = 0)
{
 $ENCODING = canGzip();
 if ($ENCODING)
 {
  echo "n<!-- Use compress $ENCODING -->n";
  $contents = ob_get_contents();
  ob_end_clean();

  if ($debug)
  {
            $s = "<p>Not compress length: ".strlen($contents);
            $s .= "<br/>Compressed length: ".strlen(gzcompress($contents,$level));
            $contents .= $s;
        }

        header("Content-Encoding: $ENCODING");   
        echo "x1fx8bx08x00x00x00x00x00"; //???
        $size = strlen($contents);
        $crc = crc32($contents);
        $contents = gzcompress($contents, $level);
        $contents = substr($contents, 0, strlen($contents) - 4); //???
        echo $contents;
        echo pack('V',$crc);
        echo pack('V',$size);
        exit;
 }
 else
 {
  ob_end_flush();
  exit();
 }
}
?>

使用方法:    ------------Start of file----------
                 |< ?
                 | include('gzipOut.php');
                 |? >
                 |<HTML>
                 |... the page ...
                 |</HTML>
                 |< ?
                 | echo "............"
                 |
                 | doGzipout();
                 |? >
                 -------------End of file-----------


 

关于我们
公司简介
发展历程
青鸟荣誉
联系我们
加入我们
青鸟课程
BCVE视频特效课程
BCUI全链路UI设计
BCSP软件开发专业
BCNT网络工程师
启能职业教育基础课程
长沙初中生学什么
长沙高中生学什么
长沙大学生学什么