实现WEB压缩的三种途径:Web服务器(Nginx/Apache)、Php扩展、Php代码
来源:互联网 发布:mac 添加歌曲至资源 编辑:程序博客网 时间:2024/05/22 00:47
web压缩是减少服务器响应流量、节省带宽,加快响应速度的一种方法,可提高页面性能。
deflate是同时使用了LZ77算法与哈夫曼编码(Huffman Coding)的一个无损数据压缩算法,有众多开源的实现算法。
deflate使用inflateInit(),而gzip使用inflateInit2()进行初始化,比 inflateInit()多一个参数: -MAX_WBITS,表示处理raw deflate数据
2、Apache 开启 gzip 压缩首先确保加载了 mod_deflate 模块,然后在 httpd.conf 代码中增加:
经过测试,采用服务器压缩要比使用 PHP 压缩要更快,而且压缩之后更小。
压缩格式:
从浏览器常见的请求头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 代码中增加:
<IfModule mod_deflate.c>AddOutputFilterByType DEFLATE text/html text/css text/plain text/xml application/json application/x-httpd-php application/x-javascript</IfModule>
二、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 压缩要更快,而且压缩之后更小。
1 0
- 实现WEB压缩的三种途径:Web服务器(Nginx/Apache)、Php扩展、Php代码
- Nginx + PHP Web服务器
- Nginx 0.7.x + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.7.x + PHP 5.2.9(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.7.x + PHP 5.2.9(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.7.x + PHP 5.2.9(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.6.31 + PHP 5.2.6(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx + PHP (FastCGI)搭建胜过Apache十倍的Web服务器
- Nginx+PHP(FastCGI)搭建胜过Apache十倍的Web服务器
- activity的4种启动模式
- 在ios中调用C语言的国密算法SM2以替换RSA
- 对象资源管理及智能指针的简单用法
- 将一个从大到小的数组,用以下排序方法排序成从小到大的,()最快。----阿里巴巴2015实习生笔试题
- java synchronized详解
- 实现WEB压缩的三种途径:Web服务器(Nginx/Apache)、Php扩展、Php代码
- CSS--position属性
- HDU 5372 线段树
- Objective-C——Category、Extension、Protocol
- CSS3属性之多栏布局column
- SDKD 2016 Summer Single Contest #02.C
- Xcode项目代码行数统计
- Unity接入安卓程序,打包出错的解决办法
- jQuery 之 选择器与事件类型(二)