帝国软件
  设为首页 加入收藏 关于我们
 
解密帝国网站管理系统
栏 目:
 
您的位置:首页 > 技术文档 > PHP编程
加速你的页面——数据压缩
作者:匿名 发布时间:2004-01-06 来源:

最近偶的网站越来越慢,不是脚本执行时间慢,是网络传输速度慢。
知道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-----------


 

  
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
 ·使用Server.scripttimeout来减少  (2005-03-12)
 ·EJB 最佳实践:用值对象加速您的  (2005-03-12)
 ·用Pear加速PHP程序开发  (2005-03-11)
 ·网站加速 PHP 缓冲的免费实现方法  (2005-03-11)
 ·为加速 PHP 程序而努力  (2005-03-11)

   栏目导行
  PHP编程
  ASP编程
  ASP.NET编程
  JAVA编程
   站点最新
·致合作伙伴的欢迎信
·媒体报道
·帝国软件合作伙伴计划协议
·DiscuzX2.5会员整合通行证发布
·帝国CMS 7.0版本功能建议收集
·帝国网站管理系统2012年授权购买说
·PHPWind8.7会员整合通行证发布
·[官方插件]帝国CMS-访问统计插件
·[官方插件]帝国CMS-sitemap插件
·[官方插件]帝国CMS内容页评论AJAX分
   类别最新
·Windows下集成安装Apache,PHP,MYSQ
·Mysql注入:SQL Injection with MyS
·PHP 的来龙去脉
·PHP 的功能概述
·PHP与其它CGI的比较
·PHP 的编译配置详细选项
·php.ini 配置详细选项
·如何写作PHP程序
·Hello,World
·嵌入方法
 
关于帝国 | 广告服务 | 联系我们 | 程序开发 | 网站地图 | 留言板 帝国网站管理系统