我们只要把页面在服务器端压缩再输出到浏览器就行了,你可以理解为制作压缩饼干的暂时放原料的工作台

你可以理解为制作压缩饼干的暂时放原料的工作台,要实现GZIP压缩页面需要浏览器和服务器共同支持,要实现GZIP压缩页面需要浏览器和服务器共同支持,我们只要把页面在服务器端压缩再输出到浏览器就行了

要贯彻GZIP压缩页面要求浏览器和服务器协同支撑,实际上正是服务器压缩,传到浏览器后浏览器解压并分析。浏览器那边无需大家担忧,因为现在多数浏览器都协理拆解剖析GZIP过的页面。大家只要把页面在劳动器端压缩再出口到浏览器就可以了。
稍稍罗嗦,上面说正事:
正如要制作压缩饼干,先要得到原料,要减削贰个页面,首先要赢得要出口的原委。PHP中的ob_start(卡塔尔(قطر‎(ob
=> output
buffer)函数能够兑现这一个效率,它可以把程序里计划输出的内容先放手一个称作“缓冲区”的地点,当然,你能够领略为创设压缩饼干的临时放原料的专门的学业台。
这些函数一定要在页面输出以前运用,所以日常把它坐落于代码的最上方。因为它就好像八个工作台,所以你要在原料到来此前将在策画好它,不然原料来了没地点放,会出标题标。用ob_start(卡塔尔(قطر‎获得要减小的页面之后,我们就可以制作压缩饼干了,不对,应该是足以减去页面了!可是好像还缺乏意气风发台压缩机,
EZ,我们用PHP带的zlib扩充做风流洒脱台:
复制代码 代码如下:
function ob_gzip($contentState of Qatar // $content
正是要收缩的页面内容,也许说饼干原料
{
if( !headers_sent(卡塔尔(قطر‎ && // 假若页面底部音信还尚无出口
extension_loaded(“zlib”卡塔尔国 && // 而且zlib扩充已经加载到PHP中
strstr($_SERVER[“HTTP_ACCEPT_ENCODING”],”gzip”State of Qatar卡塔尔(قطر‎//况兼浏览器说它能够承担GZIP的页面
{
$content = gzencode($content.” \n//此页已收缩”,9State of Qatar;
为计划压缩的剧情贴上“//此页已压缩”的注释标签,然后用zlib提供的gzencode(State of Qatar函数试行等第为9的裁减,那个参数值范围是0-9,0意味无压缩,9意味最大滑坡,当然压缩程度越高越费CPU。
//然后用header(卡塔尔函数给浏览器发送一些头顶音讯,告诉浏览器那个页面已经用GZIP压缩过了!
header(“Content-Encoding: gzip”);
header(“Vary: Accept-Encoding”);
header(“Content-Length: “.strlen($content));
}
return $content; //再次来到压缩的剧情,或许说把减掉好的饼干送回职业台。
}

GZIP(GNU-ZIP)是生龙活虎种压缩本领。经过GZIP压缩后页面大小能够改为原来的伍分叁竟是更加小。那样客户浏览的时候就能够以为很爽很乐意!
要兑现GZIP压缩页面需求浏览器和服务器同盟支撑,实际上正是服务器压缩,传到浏览器后浏览器解压并深入分析。浏览器那边无需大家顾忌,因为几前段时间许多浏览器都扶植解析GZIP过的页面。大家只要把页面在劳务器端压缩再出口到浏览器就能够了。

压缩机做好了现在,大家把压缩机放到职业台上,于是原本的ob_start()变成
ob_start(‘ob_gzip’);
//没错,就是给ob_start(卡塔尔国加贰个参数,参数名就是大家刚刚做的“压缩机”的函数名。那样当内容步向缓冲区后PHP就能调用ob_gzip函数把它降低了。
好了,全体的干活已做到,最终交货:
ob_end_flush(State of Qatar;
//截至缓冲区,输出内容。当然,不用那几个函数也行,因为程序施行到最终会自动将缓冲区内容输出。
后生可畏体化的亲自过问如下:
复制代码 代码如下:
//启用贰个蕴涵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;
}
?>

有个别罗嗦,上边说正事:
正如要制作压缩饼干,先要得到原材料,要裁减多少个页面,首先要获得要出口的剧情。PHP中的ob_start(卡塔尔国(ob
=> output
buffer)函数能够达成那些功用,它能够把程序里策动输出的源委先放置一个叫做“缓冲区”的地点,当然,你能够领略为创设压缩饼干的有的时候放原料的专门的学业台。
其意气风发函数必供给在页面输出以前使用,所以平时把它放在代码的最上方。因为它就好像七个工作台,所以你要在原材料到来从前将要打算好它,不然原料来了没地点放,会出标题标。用ob_start(State of Qatar获得要裁减的页面之后,我们就足以制作压缩饼干了,不对,应该是能够减少页面了!但是好像还贫乏意气风发台压缩机,EZ,我们用PHP带的zlib扩大做风姿罗曼蒂克台:

经超过实际际测量检验,上面代码中假若不用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

 

示例风流潇洒(用php的放到压缩函数):
复制代码 代码如下:
if(Extension_Loaded(‘zlib’)) Ob_Start(‘ob_gzhandler’);
Header(“Content-type: text/html”);
?>

function ob_gzip($content卡塔尔 // $content
正是要减弱的页面内容,或然说饼干原料
{    
    if(    !headers_sent(State of Qatar && // 借使页面底部新闻还尚无出口
        extension_loaded(“zlib”State of Qatar && // 并且zlib扩张已经加载到PHP中
        strstr($_SERVER[“HTTP_ACCEPT_ENCODING”],”gzip”State of Qatar)//而且浏览器说它能够承担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()变成

for($i=0;$i<10000;$i++){
echo ‘Hello World!’;
}
?>

 

if(Extension_Loaded(‘zlib’)) Ob_End_Flush();
?>

ob_start(‘ob_gzip’);
//没错,就是给ob_start(卡塔尔(قطر‎加叁个参数,参数名就是大家刚刚做的“压缩机”的函数名。那样当内容步入缓冲区后PHP就能调用ob_gzip函数把它收缩了。

示例二(自写函数):
复制代码 代码如下:

好了,全部的行事已形成,最终交货:

无标题文书档案