php程序实现页面gzip传输的例子

例子

 代码如下 复制代码

/*
* 压缩数据
*/
public static function ob_gzip($content) // $content 就是要压缩的页面内容,或者说饼干原料
{  
    if(    !headers_sent() && // 如果页面头部信息还没有输出
        extension_loaded("zlib") && // 而且zlib扩展已经加载到PHP中
        strstr($_SERVER["HTTP_ACCEPT_ENCODING"],"gzip")) //而且浏览器说它可以接受GZIP的页面
    {
        $content = gzencode($content." OK",9); //此页已压缩”的注释标签,然后用zlib提供的gzencode()函数执行级别为9的压缩,这个参数值范围是0-9,0表示无压缩,9表示最大压缩,当然压缩程度越高越费CPU。
               
        //然后用header()函数给浏览器发送一些www.111cn.net头部信息,告诉浏览器这个页面已经用GZIP压缩过了!
        header("Content-Encoding: gzip");
        header("Vary: Accept-Encoding");
        header("Content-Length: ".strlen($content));
    }
        return $content; //返回压缩的内容,或者说把压缩好的饼干送回工作台。
}

既然讲到php gzip了我们再介绍一下apache

第1步

LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so

在httpd.conf中加入以下代码,可以加到任何空白地方,不了解apache的朋友,如果担心加错地方,就放到http.conf文件的最后一行,如果是虚拟服务器可以写.htaccess文件里面,然后放在项目下即可。

 代码如下 复制代码

<IfModule deflate_module>
 SetOutputFilter DEFLATE
 # Don’t compress images and other
 SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
 SetEnvIfNoCase Request_URI .(?:pdf|doc)$ no-gzip dont-vary
 AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css
 AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

本配置到这里apache中的gzip压缩就配置完成,重启apache后,我们测试一下

 
我们通过Http头中的: Content-Encoding:gzip 属性判断返回后的数据已经启用了gzip压缩: 
  
使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B: 
  
当同时启动了动态文件压缩时, Gzip压缩评级为A: 

时间: 2024-09-20 23:37:00

php程序实现页面gzip传输的例子的相关文章

十个 SCP 传输命令例子

十个 SCP 传输命令例子 Linux系统管理员应该很熟悉CLI环境,因为通常在Linux服务器中是不安装GUI的.SSH可能是Linux系统管理员通过远程方式安全管理服务器的最流行协议.在SSH命令中内置了一种叫SCP的命令,用来在服务器之间安全传输文件. 以下命令可以解读为:用"username account""拷贝 source file name"到"destination host"上的"destination folder

ASP程序将页面中的电话号码生成图片

作用:用ASP程序将页面中的电话号码生成图片格式. 以下是引用片段: 以下为引用的内容: <% Call Com_CreatValidCode(Request.QueryString("tel")) Public Sub Com_CreatValidCode(pTel) '----------禁止缓存 Response.Expires = 0 Response.AddHeader "Pragma","no-cache" Response.A

.net输出重写压缩页面文件的小例子

这篇文章介绍了.net输出重写压缩页面文件的小例子,有需要的朋友可以参考一下   不知你是否留意过,有一些网站的html代码都是混在一起,没有任何空格和换行等多余字符.它的好处不用多说--界面大小绝对优化.或许您在想,他 们这样做大大降低了可读性.的确,我们看是很乱,只能借用第三方软件重新布局代码.但是,我想他们开发时使用的源码不可能是混一团,前不久发现一个页面基 类,大概可以解释这个问题,不多说,看源码: 复制代码 代码如下: using System; using System.Data;

求助,哪位大神能帮忙写个模拟登陆csdn的程序,我拿来做例子,研究httpclient模拟登陆,谢谢

问题描述 求助,哪位大神能帮忙写个模拟登陆csdn的程序,我拿来做例子,研究httpclient模拟登陆,谢谢 求助哪位大神能帮忙写个模拟登陆csdn的程序,我拿来做例子,研究httpclient模拟登陆,谢谢 解决方案 http://blog.csdn.net/njchenyi/article/details/38801287 解决方案二: 报错了....能直接发我个么..= =初学者,并不太懂,谢谢

js-利用dwr调用后台程序 ,页面报错

问题描述 利用dwr调用后台程序 ,页面报错 前台使用ext插件,调用后台的方法就是如图所示的问题,对照别的功能也看了,步骤和需要的参数都配置了,实在很纳闷. 最后补充一下,XXXXX is not a function 这句话以为着什么,和那个 没定义是什么区别 解决方案 XXXXX is not a function 就是说你前面需要有window.onload的地方没有,它不是没有定义函数,只是不被认为是函数

webkit中页面不能跳转-c#程序webkit页面不能跳转

问题描述 c#程序webkit页面不能跳转 winform中添加webkitbrowser,passport.baidu.com页面登录不能跳转,显示登录超时如何解决??急急急 解决方案 目前采用chromewebbrowser支持,感谢各位大牛的技术支持 解决方案二: fiddler调试下,点了登录发送请求到服务器了没有 解决方案三: 是不是webkit版本太旧有些新标准不支持了呢?其实我觉得用chromium比用webkit更好

String转document,java程序访问页面,执行js

问题描述 java代码需求,用程序访问页面,得到页面后,继续访问js,并执行它.但是js里面用到了document及相关的东西,所以我在java代码里面执行js的时候有错误,那么我只能给js添加一个document,但是怎么生成一个符合要求的document呢,这里面包括location,host,等等一系列东西! 解决方案

WPF浏览器应用程序中页面与页面之间如何传递参数

问题描述 WPF浏览器应用程序中页面与页面之间如何传递参数,以前写应和程序的时候比如:datatabledt=newdatatable();Awindowaw=newAwindow(dt);aw.show();可以通过窗体的构造函数传递参数至下一个窗体,在WPF浏览器应用程序中转至下一页时怎样把参数传递下去? 解决方案 解决方案二: 解决方案三:如何要传一个datatable有什么办法?解决方案四:如果要在两个页面之前传递一个DataTable用什么办法?解决方案五:接受DataTable的页面

如何解决页面之间传输中文乱码的问题

如何解决页面之间传输中文乱码的问题hbzxf(阿好)http://www.cnblogs.com/hbzxf 有的时候我们需要在页面之间传输中文,但是.NET模认在Webconfig中为我们建立的编码格式为utf-8,于是在传输中文的时候变成了乱码,相应的接受也会是乱码信息,如何解决这个问题,我们可以用两种方法. 更改Webconfig中的编码方式,如下:1.在你的web.config中把编码 <globalization requestEncoding="utf-8" resp