这篇文章主要为大家详细介绍了PHP 实现GZIP压缩页面的示例,具有一定的参考价值,可以用来参考一下。
GZIP(GNU-ZIP)是一种压缩技术。经过GZIP压缩后页面大小可以变为原来的30%甚至更小。这样用户浏览的时候就会感觉很爽很愉快!
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()变成
<?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信息:
本文来自:http://www.q1010.com/173/67-0.html
注:关于PHP 实现GZIP压缩页面的示例的内容就先介绍到这里,更多相关文章的可以留意四海网的其他信息。
关键词:GZIP
四海网收集整理一些常用的php代码,JS代码,数据库mysql等技术文章。