当前位置:多学网学习教育电脑学习编程入门PHP教程网页压缩输出

网页压缩输出

[08-23 22:09:48]   来源:http://www.duoxue8.com  PHP教程   阅读:905
网页压缩输出,标签:PHP技巧,php培训,php学习,php安装,http://www.duoxue8.com

<? 
//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 = "x1fx8bx08x00x00x00x00x00";
$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); 


?> 

---------------------------------------------------------------

<?php
phpinfo();
?>
里面看HTTP_ACCEPT_ENCODING gzip, deflate 这样估计就可以了。具体不清楚。
 




网页压缩输出 结束。
Tag:PHP教程PHP技巧,php培训,php学习,php安装电脑学习 - 编程入门 - PHP教程
网页压缩输出相关文章