nginx、apache与tomcat开启gzip压缩

最近在研究页面加载优化

对于页面元素较多或者页面加载量比较大的时候,就需要开启服务器的gzip压缩了,对于常规资源的压缩体积减少量非常可观。

服务器
nginx版本为1.8.0
apache版本为
2.2.21
tomcat版本为7.0.35

apache配置:
$ nginx -V
列出的配置中添加:--with-http_gzip_static_module
重新编译安装

完成之后 修改nginx配置:

在http节点下添加:
gzip on;
gzip_min_length 1k;
gzip_buffers 16 64k;
gzip_http_version 1.1;
gzip_comp_level 6;
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary on;
$ nginx -t
$ nginx -s reload

apache配置:

在http.conf中取消以下两行的注释:

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

mod_deflate.so 为gzip压缩功能模块

mod_headers.so 能够在返回请求时告知浏览器本页面使用了gzip压缩

 

然后添加以下配置:

<IfModule mod_deflate.c>
    SetOutputFilter DEFLATE    #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩

    SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不对gif|jpe?g|png格式的文件进行压缩
    SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上,不对exe|t?gz|zip|bz2|sit|rar格式的文件进行压缩
    SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary #同上,不对pdf|mov|avi|mp3|mp4|rm格式的文件进行压缩

    AddOutputFilterByType DEFLATE text/* #设置对文件是文本的内容进行压缩,例如text/html  text/css  text/plain等
    AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩
    AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #这段是告诉apache对php类型的文件进行压缩

    BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的
    BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的问题,所以不开启压缩
    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏览器会伪装成 Netscape ,但是事实上它没有问题
</IfModule>

 

对于多媒体及压缩文件等类型的资源,本身就是经过相应的压缩算法压缩过的,所以二次压缩对体积影响不大,而且由于资源体积相对较大,在压缩时会加重服务器的压力。

 

开启后在相应头中可以看到相应的变化:



对于大量文本页面的压缩效果非常明显(本机测试):

未开启压缩前:


开启压缩后:


由于压缩解压工作主要是由cpu来处理的,所以开启了gzip压缩后,对服务器cup的压力会增大,apache在响应浏览器请求时也会多执行一步,所以本机测试时虽然加载的数据量变少了,但加载时间却边长了。





tomcat配置:

找到<Connector/>标签
添加以下配置:
compression="on"
compressionMinSize="500"
noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/png"

添加完成后的
<Connector/>标签状态如下:

   <Connector port="8080" protocol="HTTP/1.1"
            connectionTimeout="20000"
            compression="on"
            compressionMinSize="500"
            noCompressionUserAgents="gozilla,traviata"
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain,image/png"/>            

 

End.




posted @ 2014-01-08 14:54  lianche  阅读(763)  评论(0编辑  收藏  举报