时间:2014-01-29 来源:

PHP开启gzip页面压缩实例代码

要实现GZIP压缩页面需要浏览器和服务器共同支持web前端制作,实际上就是服务器压缩,web前端制作传到浏览器后浏览器解压并解析.浏览器那边不需要我们担心div前端切图,因为现在绝大多数浏览器都支持解析GZIP过的页面.我们只要把页面在服务器端压缩再输出到浏览器就行了.
有点罗嗦,div前端切图下面说正事:
正如要制作压缩饼干web切图报价,先要拿到原料,手机html制作要压缩一个页面符合w3c标准,首先要获得要输出的内容.PHP中的ob_start()(ob => output buffer)函数可以实现这个功能,符合w3c标准它可以把程序里准备输出的内容先放到一个叫做“缓冲区”的地方网页外包接活,当然,jpg或psd转html你可以理解为制作压缩饼干的暂时放原料的工作台.
这个函数一定要在页面输出之前使用web前端制作,所以一般把它放在代码的最顶端.因为它就像是一个工作台,web前端制作所以你要在原料到来之前就要准备好它承接网页制作,否则原料来了没地方放,承接网页制作会出问题的.用ob_start()得到要压缩的页面之后web切图报价,我们就可以制作压缩饼干了,网站div+css不对符合w3c标准,应该是可以压缩页面了!不过好像还缺少一台压缩机,符合w3c标准 EZ,我们用PHP带的zlib扩展做一台:
复制代码 代码如下:

function ob_gzip($content) // $content 就是要压缩的页面内容,网页外包接活或者说饼干原料
{
if( !headers_sent() && // 如果页面头部信息还没有输出
extension_loaded("zlib") && // 而且zlib扩展已经加载到PHP中
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],9); 为准备压缩的内容贴上“//此页已压缩”的注释标签承接网页制作,然后用zlib提供的gzencode()函数执行级别为9的压缩,承接网页制作这个参数值范围是0-9,0表示无压缩,手机html制作9表示最大压缩符合w3c标准,当然压缩程度越高越费CPU.
//然后用header()函数给浏览器发送一些头部信息,html切图制作告诉浏览器这个页面已经用GZIP压缩过了!
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
return $content; //返回压缩的内容网页外包接活,或者说把压缩好的饼干送回工作台.
}

压缩机做好了之后,网页外包接活我们把压缩机放到工作台上web前端制作,于是原来的ob_start()变成
ob_start('ob_gzip'); //没错,web前端制作就是给ob_start()加一个参数承接网页制作,参数名就是我们刚才做的“压缩机”的函数名.这样当内容进入缓冲区后PHP就会调用ob_gzip函数把它压缩了.
好了,div前端切图所有的工作已完成web切图报价,最后交货:
ob_end_flush(); //结束缓冲区,手机html制作输出内容.当然符合w3c标准,不用这个函数也行,符合w3c标准因为程序执行到最后会自动将缓冲区内容输出.
完整的示例如下:
复制代码 代码如下:

<?php
//启用一个带有ob_gzip压缩机的工作台
ob_start('ob_gzip');
//准备一些待压缩的内容
for($i=0; $i<100; $i )
{
echo('这里是压缩饼干的原料网页外包接活,这里是压缩饼干的原料,jpg或psd转html原料');
}
//输出压缩成果
ob_end_flush();
//这是ob_gzip压缩机
function ob_gzip($content)
{
if( !headers_sent() &&
extension_loaded("zlib") &&
strstr($_SERVER["HTTP_ACCEPT_ENCODING"],9);
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
return $content;
}
?>

经过实际测试承接网页制作,是4.69KB=4802.56B,呃……我数学可能不好符合w3c标准,自己算下压缩到了原来的百分之多少吧..
另外,符合w3c标准下面是用FlashGet获取的日志信息网页外包接活, 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的内置压缩函数):
复制代码 代码如下:

<?PHP
if(Extension_Loaded('zlib')) Ob_Start('ob_gzhandler');
Header("Content-type: text/html");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<?php
for($i=0;$i<10000;$i++){
echo 'Hello World!';
}
?>
</body>
</html>
<?PHP
if(Extension_Loaded('zlib')) Ob_End_Flush();
?>

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

<?php ob_start('ob_gzip'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
</body>
</html>
<?php
ob_end_flush();
//压缩函数
function ob_gzip($content){
if(!headers_sent()&&extension_loaded("zlib")&&strstr($_SERVER["HTTP_ACCEPT_ENCODING"],9);
header("Content-Encoding: gzip");
header("Vary: Accept-Encoding");
header("Content-Length: ".strlen($content));
}
return $content;
}
?>
点击次数:3692
作者:

其它web前端开发资讯

boost::algorithm用法详解之字符串关系判断2018年01月20日安卓基础(十七) 【编程语言】2018年01月20日HTML5哪点事 【移动开发】2018年01月20日“.中国”域名预计8月全球启用2018年01月20日通过ulimit改善linux系统性能(摘自IBM) 【编程语言】2018年01月20日AndroidDevTools 【Web前端】2018年01月20日设置屏幕右下角来自QQ空间的通知2018年01月20日zookeeper原理 【云计算】2018年01月20日PPTV热播剧场高清播出-回家的诱惑2018年01月20日Android.mk文件解析【数据库】2018年01月20日不是矫情的人,就别做矫情的事!2018年01月20日POJ3728离线LCA【系统运维】2018年01月20日苹果智能手写笔专利曝光可在任意表面书写2018年01月20日用户体验的网站首页设计的准则2018年01月20日Android学习.1(线性布局和相对布局)2018年01月20日C语言如何清除scanf()缓存 【编程语言】2018年01月20日
web前端行业资讯
Web new NewsList
微软发布WindowsServerBuild17074更新 ,,2018年01月18日凭借一个AI小功能,这款Google应用冲上苹果AppStore榜首 ,,2018年01月18日百度数据可视化实验室正式成立,发布深度学习可视化平台VisualDL ,,2018年01月18日OpenAI开源最新工具包,模型增大10倍只需额外增加20%计算时间 ,,2018年01月18日百度手机输入法8.0正式发布:支持多人语音速记 ,,2018年01月18日CSDN宣布收购TinyMind团队并升级为AI社区 ,,2018年01月18日甲骨文发布补丁修复英特尔芯片漏洞造成的问题 ,,2018年01月18日权威!官方发布CPU熔断和幽灵漏洞防范指引:附补丁下载 ,,2018年01月18日Oracle宣布新的JavaChampions ,,2018年01月18日腾讯加码区块链项目已悄然注册“以太锁”商标 ,,2018年01月18日Fedora28壁纸征集活动现已开幕:将持续至2月13日 ,,2018年01月18日苹果WebKit团队发布Speedometer2.0网页响应测试工具 ,,2018年01月18日百度输入法8.0后天发布:全感官AI输入 ,,2018年01月18日腾讯和乐高合作:共同研发智能玩具、游戏 ,,2018年01月18日HomePod上市日益临近智能音箱市场吸引力越来越大 ,,2018年01月18日3D打印脑组织?科学家正在向这一目标正在前进 ,,2018年01月18日英特尔公布修补漏洞后PC性能数据:8代CPU影响最小 ,,2018年01月18日云存储公司Dropbox秘密提交IPO申请估值超百亿美元 ,,2018年01月18日iPod之父:防手机上瘾无技术难度苹果谷歌应承担责任 ,,2018年01月18日芯片不安全英特尔云客户考虑转用AMD等对手处理器 ,,2018年01月18日2018年Java展望 ,,2018年01月18日区块链有多火?快播流量矿石遭20多万人疯抢 ,,2018年01月18日Intel搞定神经拟态芯片:模拟人类大脑、自主学习 ,,2018年01月18日阿里巴巴发布IoTConnect开放连接协议,盼推动语音互动入口普及 ,,2018年01月18日区块链火了,全球大佬们怎么看? ,,2018年01月18日Facebook正测试新功能主推本地新闻资讯 ,,2018年01月18日在GooglePlay中发现使用Kotlin开发的安卓恶意软件 ,,2018年01月18日VisualStudio201715.6预览版本2,增加新功能 ,,2018年01月18日百度陆奇:AI是5G最好的加速器 ,,2018年01月18日PinterestCEO:不同于谷歌和Facebook,我们走了第三条路 ,,2018年01月18日自定义日期类型转换器 【云计算】2014年12月09日Jquery快速构建可拖曳的购物车DragDrop2014年01月29日swanzhu学ios(四)之UIScrollView与UIPageControl【综合】2015年08月16日MultiplyStrings【编程语言】2015年07月24日预防游泳时发生头晕和腿抽筋解决方法集锦2014年01月29日表空间正在热备份时关闭实例重启报错的重现和解决2014年11月12日渗透jsp网站遇到防火墙后突破方法【编程语言】2015年02月13日WMwareredhat5oracle11g安装方法2014年01月30日windows服务创建步骤【编程语言】2014年12月01日arcengine两地图进行联动【Web前端】2015年05月28日乐观的鲍尔默:明年年底Win8用户超5亿 ,,2016年06月23日高级容器引擎Dockerv1.13.1发布 ,,2017年02月09日ASP也使用ORM,给ASP上所有的SQL注入画上句号2014年01月29日android自定义组件(手机加速球+水面波动效果) 【移动开发】2015年09月19日string对象和C风格代码的混用【编程语言】2015年03月09日JMeterjava.lang.OutOfMemoryError:PermGenspace错误 【编程语言】2015年06月11日ubuntu安装nginx时提示error:theHTTPrewritemodulerequiresthePCRElibrary【移动开发】2014年11月20日【bzoj1042】【HAOI2008】【硬币购物】【dp+容斥原理】【编程语言】2015年09月01日一句话脚本系列之logcat过滤指定进程的log【综合】2015年03月30日怎样提取图片中的文字2014年01月28日使用Struts2和jQueryEasyUI实现简单CRUD系统(二)——ajax与struts2的交互 【数据库】2015年09月19日携程网宕机事故深度剖析 【数据库】2015年06月05日python函数——根据经纬度计算距离 【移动开发】2015年08月14日设计模式在游戏中的应用--外观模式(八) 【架构设计】2015年08月28日装箱问题---动态规划 【综合】2015年05月11日四步搞定PythonGUI【综合】2015年07月31日OpenCVR可以互联啦【编程语言】2015年05月11日老牌黑客:Anonymous组织攻击手段为下三滥 ,,2016年06月23日如何在onCreate()方法中,获取得到控件的宽度和高度?小意思! 【综合】2015年01月24日ASP中Sub和Function的区别说明2014年01月29日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)