经典代码

共同探讨asp,php等好代码搜集

« mysql数据库的备份和数据导入导出php创建多层目录和文件 »

PHP使用Gzip压缩文件传输

IIS6开启步骤:1.添加Gzip的Web服务扩展并设置为有效,gzip的DLL在(%windir%/system32/inetsrv/gzip.dll)2.IIS 管理器 > 网站 > 属性 > 服务选项卡 > HTTP压缩,根据需要设置,我把两个都勾上,对动态文件也压缩。3.此时重启IIS,压缩就生效了。但是默认设置压缩的文件格式太少,可以进一步设置。4.修改 MetaBase.xml,建议先备份。找到 Location ="/LM/W3SVC/Filters/Compression/gzip"HcDynamicCompressionLevel ,设置压缩率,取值0~10,0不压缩,10最高压缩率HcFileExtensions,需要压缩的静态文件扩展名,默认只有htm,html,txt,可以把js,css添加进去。建议按原来的格式,用换行作为分隔HcScriptFileExtensions,需要压缩的动态文件扩展名在这下面有 Location ="/LM/W3SVC/Filters/Compression/Parameters"一个有用的设置是HcMinFileSizeForComp,小于该大小的文件不压缩。5.iisreset -stop 停止IIS,保存MetaBase.xml6.iisreset -start 启动IIS基本上Gzip就开启了。可以访问这里检测:http://www.pipeboost.com/report.asp另:上面的检测地址是一个叫pipeboost的软件的测试地址,这个软件可以很直观的设置IIS的Compression,并且可以缓存。可以针对单个站点设置是否启用压缩等等,非常好用!可惜就是太贵了,1499刀!杀人哦~~~有兴趣可以去下载30天试用版http://www.pipeboost.com/trial.asp


Gzip压缩传输能更加有效节约带宽流量。他先把文本压缩为.gz然后传输给浏览器,最后由浏览器负责解压缩呈现给用户。
老版本的浏览器可能不能显示,但是现在大多数浏览器都能显示。

启用Gzip传输首先要求PHP4.0.5以后版本。

方法1:

在.htaccess中加入

php_flag zlib.output_compression on
php_value zlib.output_compression_level 2


方法2:

在php脑袋顶上加入

ob_start(”ob_gzhandler”);


这两个方法都能达到压缩传输的效果。

这里检查你的网站是否是压缩过的

另外如何GZIP压缩HTML呢?

这个很简单:首先把HTML做成PHP,然后在.htaccess中重写html就可以了。

---------------------------------网上找到的另一种方法-------------------------

http1.1支持gzip编码的数据,所以,通过GZIP来实现页面压缩。在PHP中,我所知道的有两种方法使用GZIP,一种是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-----------

 

  • 相关文章:

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

日历

最新评论及回复

最近发表

Powered By Z-Blog 1.8 Devo Build 80201 Code detection by Codefense

Copyright 2008-2100 www.codemdb.com. Some Rights Reserved.