web服务扩展 php,实现WEB压缩的三种途径:Web服务器(Nginx/Apache)、Php扩展、Php代码...

web压缩是减少服务器响应流量、节省带宽,加快响应速度的一种方法,可提高页面性能。

压缩格式:

从浏览器常见的请求头Accept-Encoding:"gzip, deflate"可知,常见压缩格式有gzip,deflate。

网摘:gzip是一种数据格式,默认且目前仅使用deflate算法压缩data部分. GZIP是使用DEFLATE进行压缩数据的另一个压缩库

deflate是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法,有众多开源的实现算法。

deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据

下面介绍实现WEB压缩的三种途径,同一时间只能允许一种方式存在

一、WEB服务器开启压缩

1、Nginx开启 gzip 压缩

#返回Vary:Accept-Encoding头。

#开启压缩时,需要针对压缩和非压缩文件,都返回Vary:Accept-Encoding头。

#这个头部是告诉缓存服务器,要根据用户支持的编码方式提供对应的文件。

gzip_vary on;

#开启压缩

gzip on;

#IE6对gzip支持不是太好,所以客户端如果是IE6那么服务器禁用gzip压缩

gzip_disable "msie6";

#any - 无条件启用压缩

gzip_proxied any;

#设置buffer大小

gzip_buffers 4 16k;

#最小阀值,小于该值的文件将不进行压缩。可降低CPU的负荷

gzip_min_length 1k;

#压缩等级1-10,数字越大压缩比越高,但耗时和CPU占用也越高。一般超过6后,耗时增加很多但压缩比没有明显增长。

gzip_comp_level 6;

#支持的压缩格式,没有写图片,因为jpeg,png已经有较高的压缩比,没必要再耗费cpu资源

gzip_types text/plain text/css application/json application/javascript application/x-javascript text/xml application/xml application/xml+rss text/javascript;

2、Apache 开启 gzip 压缩首先确保加载了 mod_deflate 模块,然后在 httpd.conf 代码中增加:

AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/json application/x-httpd-php application/x-javascript

二、PHP开启压缩(前提:需要php安装zlib扩展。一般php4.3以后就内置在php中了)

1、在php.ini文件中找到zlib.output_compression,改成zlib.output_compression = On。 2、

zlib.output_compression_level前面的;去掉,后面的-1改成1~5的数值。建议参数值是1~5,6以实际压缩效果提升不大,cpu占用却是几何增长

三、代码方式(前提:需要php安装zlib扩展。一般php4.3以后就内置在php中了)

如果无法修改 php.ini 文件,则可以在需要 gzip 压缩的 PHP 文件头部加入:

if(extension_loaded('zlib')){

if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {

ob_start('ob_gzhandler');

}else{

ob_start();

}

}或者自定义压缩函数:

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;

}

//调用

ob_start('ob_gzip');

echo $content_to_compress;

ob_end_flush();

经过测试,采用服务器压缩要比使用 PHP 压缩要更快,而且压缩之后更小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值