统计在线人数...

用PHP控制您的浏览器cache

[ 来源:互联网 | 作者:佚名 | 时间:2008-9-9 上午 10:07:55 | 浏览:统计中... ]

述。

我们现在来看一看第二种方法的具体实现:

Example4.

 <?php
ob_start();//打开缓冲区
?>
php页面的全部输出

 <?
$content=ob_get_contents();//取得php页面输出的全部内容
$fp=fopen(“output00001.html”,“w”);//创建一个文件,并打开,准备写入
fwrite($fp,$content);//把php页面的内容全部写入output00001.html,然后……
fclose($fp);
?>
这样,所谓的静态模版就很容易的被实现了……

二、捕捉输出

以上的Example4.是一种最简单的情况,你还可以在写入前对$content进行操作……

你可以设法捕捉一些关键字,然后去对它进行再处理,比如Example3.所述的PHP语法高亮显示。个人认为,这个功能是此函数最大的精华所在,它可以解决各种各样的问题,但需要你有足够的想象力……

Example5.

 <?
Functionrun_code($code){
 If($code){
ob_start();
eval($code);
$contents=ob_get_contents();
ob_end_clean();
 }else{
echo“错误!没有输出”;
exit();
 }
 return$contents;
}
以上这个例子的用途不是很大,不过很典型$code的本身就是一个含有变量的输出页面,而这个例子用eval把$code中的变量替换,然后对输出结果再进行输出捕捉,再一次的进行处理……

Example6.加快传输

 <?
/*
**Title.........:PHP4HTTPCompressionSpeedsuptheWeb
**Version.......:1.20
**Author........:catoc<catoc@163.net>
**Filename......:gzdoc.php
**Lastchanged..:18/10/2000
**Requirments...:PHP4>=4.0.1
**PHPwasconfiguredwith--with-zlib[=DIR]
**Notes.........:DynamicContentAccelerationcompresses
**thedatatransmissiondataonthefly
**codebysunjinhu(catoc)<catoc@163.net>
**Mostnewerbrowserssince1998/1999have
**beenequippedtosupporttheHTTP1.1
**standardknownas"content-encoding."
**Essentiallythebrowserindicatestothe
**serverthatitcanaccept"contentencoding"
**andiftheserveriscapableitwillthen
**compressthedataandtransmitit.The
**browserdecompressesitandthenrenders
**thepage.
**
**ModifiedbyJohnLim(jlim@natsoft.com.my)
**basedonideasbySandyMcArthur,Jr
**Usage........:
**Nospacebeforethebeginningofthefirst'<?'tag.
**------------Startoffile----------
**|<?
**|include('gzdoc.php');
**|?>
**|<HTML>
**|...thepage...
**|</HTML>
**|<?
**|gzdocout();
**|?>
**-------------Endoffile-----------
*/
ob_start();
ob_implicit_flush(0);
functionCheckCanGzip(){
 global$HTTP_ACCEPT_ENCODING;
 if(headers_sent()||connection_timeout()||connection_aborted()){
return0;
 }
 if(strpos($HTTP_ACCEPT_ENCODING,'x-gzip')!==false)return"x-gzip";
 if(strpos($HTTP_ACCEPT_ENCODING,'gzip')!==false)return"gzip";
 return0;
}
/*$level=compressionlevel0-9,0=none,9=max*/
functionGzDocOut($level=1,$debug=0){
 $ENCODING=CheckCanGzip();
 if($ENCODING){
print"n<!--Usecompress$ENCODING-->n";
$Contents=ob_get_contents();
ob_end_clean();
if($debug){
 $s="<p>Notcompresslength:".strlen($Contents);
 $s.="
 Compressedlength:".strlen(gzcompress($Contents,$level));
 $Contents.=$s;
}
header("Content-Encoding:$ENCODING");
print"x1fx8bx08x00x00x00x00x00";
$Size=strlen($Contents);
$Crc=crc32($Contents);
$Contents=gzcompress($Contents,$level);
$Contents=substr($Contents,0,strlen($Contents)-4);
print$Contents;
printpack('V',$Crc);
printpack('V',$Size);
exit;
 }else{
ob_end_flush();
exit;
 }
}
?>
这是catoc的一段很早以前的代码,是在weblogs.com看到的,他利用了zlib的函数,对传输的内容进行了压缩,测试表明,对于10k以上的页面,会产生效果,而且页面越大,效果越明显……

上一页  [1] [2] 

共有0人参与评价,平均得分:0分
评论内容只代表网友观点,与本站立场无关! 查看完整内容
   

当前在线人数
QQ:748838 MSN:allen_xia#msn.com E-mail:allenxia666#126.com QQ群:站长联盟北方区-北京(28200145) 站长联盟南方区-上海(67713522)