php与java通信gzip,php程序实现页面gzip传输的例子

本文介绍了如何在没有服务器权限的情况下,通过PHP实现页面的GZIP压缩。提供了PHP函数示例,用于在输出内容前进行GZIP编码,并设置了必要的HTTP头部信息。此外,还讲解了在Apache服务器上配置mod_deflate模块进行GZIP压缩的步骤,包括添加配置行和设置过滤器,以压缩HTML、CSS、JavaScript等文件类型。
摘要由CSDN通过智能技术生成

我们一提到gzip压缩很多朋友会想到直接在服务器端可以开启像iis,apache,nginx开启gzip压缩都是非常的简单,但我们如果没有服务器权限那么可以参考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.jquerycn.cn头部信息,告诉浏览器这个页面已经用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文件里面,然后放在项目下即可。

 代码如下复制代码

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

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

939079a59fd43f57885447dd718c78d5.png 

我们通过Http头中的: Content-Encoding:gzip属性判断返回后的数据已经启用了gzip压缩:

f18b63a39ad2de7a605d2a70fbe3e2c4.png  

使用YSlow检测, 当只启动静态文件压缩时, Gzip压缩评级为B:

10fea84765c3f84d659a6a97e3fd3a53.png  

当同时启动了动态文件压缩时, Gzip压缩评级为A:

71ec224f8dc12b5ef11994fbba18a9de.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值