|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
第1步环境配置好了,你算了进了1小步了,那么第2步呢 就是调出第1个程序 一般都是用hello world,视频教程里面我都做了,hello world GZIP(GNU-ZIP)是一种紧缩手艺。经由GZIP紧缩后页面巨细可以变成本来的30%乃至更小。如许用户阅读的时分就会感到很爽很兴奋!
要完成GZIP紧缩页面需求阅读器和办事器配合撑持,实践上就是办事器紧缩,传到阅读器后阅读器解压并解析。阅读器何处不需求咱们忧虑,由于如今绝大多半阅读器都撑持解析GZIP过的页面。咱们只需把页面在办事器端紧缩再输入到阅读器就好了。
有点罗嗦,上面说闲事:
正如要制造紧缩饼干,先要拿到原料,要紧缩一个页面,起首要取得要输入的内容。PHP中的ob_start()(ob => output buffer)函数可以完成这个功效,它可以把法式里筹办输入的内容先放到一个叫做“缓冲区”的中央,固然,你可以了解为制造紧缩饼干的临时放原料的任务台。
这个函数必定要在页面输入之前利用,所以普通把它放在代码的最顶端。由于它就像是一个任务台,所以你要在原料到来之前就要筹办好它,不然原料来了没中央放,会出成绩的。用ob_start()失掉要紧缩的页面以后,咱们就能够制造紧缩饼干了,不合错误,应当是可以紧缩页面了!不外仿佛还短少一台紧缩机,EZ,咱们用PHP带的zlib扩大做一台:
代码:
function ob_gzip($content) // $content 就是要紧缩的页面内容,或说饼干原料
{
if( !headers_sent() && // 假如页面头部信息还没有输入
extension_loaded("zlib") && // 并且zlib扩大已加载到PHP中
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //并且阅读器说它可以承受GZIP的页面
{
$content = gzencode($content." \n//此页已紧缩",9); 为筹办紧缩的内容贴上“//此页已紧缩”的正文标签,然后用zlib供应的gzencode()函数履行级别为9的紧缩,这个参数值局限是0-9,0暗示无紧缩,9暗示最大紧缩,固然紧缩水平越高越费CPU。
//然后用header()函数给阅读器发送一些头部信息,告知阅读器这个页面已用GZIP紧缩过了!
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
return $content; //前往紧缩的内容,或说把紧缩好的饼干送回任务台。
}
紧缩机做好了以后,咱们把紧缩机放到任务台上,因而本来的ob_start()酿成
代码:
ob_start('ob_gzip'); //没错,就是给ob_start()加一个参数,参数名就是咱们方才做的“紧缩机”的函数名。如许当内容进入缓冲区后PHP就会挪用ob_gzip函数把它紧缩了。
好了,一切的任务已完成,最初交货:
代码:
ob_end_flush(); //停止缓冲区,输入内容。固然,不必这个函数也行,由于法式履行到最初会主动将缓冲区内容输入。
完全的示例以下:
代码:
<?php
//启用一个带有ob_gzip紧缩机的任务台
ob_start('ob_gzip');
//筹办一些待紧缩的内容
for($i=0; $i<100; $i++)
{
echo('这里是紧缩饼干的原料,这里是紧缩饼干的原料,原料');
}
//输入紧缩功效
ob_end_flush();
//这是ob_gzip紧缩机
function ob_gzip($content)
{
if( !headers_sent() &&
extension_loaded("zlib") &&
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip"))
{
$content = gzencode($content." \n//此页已紧缩",9);
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
return $content;
}
?>
经由实践测试,下面代码中假如不必GZIP,是4.69KB=4802.56B,启用GZIP后减少为104B ,呃……我数学能够欠好,本人算下紧缩到了本来的百分之几何吧。。
别的,上面是用FlashGet获得的日记信息,可以看到咱们法式里加的header信息:
援用:
Fri Jan 25 17:53:10 2008 HTTP/1.1 200 OK
Fri Jan 25 17:53:10 2008 Server: Microsoft-IIS/5.1
Fri Jan 25 17:53:10 2008 Date: Fri, 25 Jan 2008 09:53:10 GMT
Fri Jan 25 17:53:10 2008 Connection: close
Fri Jan 25 17:53:10 2008 X-Powered-By: PHP/5.2.5
Fri Jan 25 17:53:10 2008 Content-Encoding: gzip
Fri Jan 25 17:53:10 2008 Vary: Accept-Encoding
Fri Jan 25 17:53:10 2008 Content-Length: 104
Fri Jan 25 17:53:10 2008 Content-type: text/html
到现在,对排版还是不很熟练,经常会排不好。 |
|