zoukankan      html  css  js  c++  java
  • 安装mod_deflate模块启用apache的GZIP压缩

    安装mod_deflate模块启用apache的GZIP压缩


    操作系统:Linux Cent OS 5 / Max OS X 10.6 snow leopard
    相关环境:Apache httpd 2.2.15
    安装版本:apache httpd 2.2.15内置mod_deflate
    gzip原本是文件压缩格式,扩展名为.gz,HTTP协议用它来改进WEB应用程序性能,加快HTTP请求返回内容的下载速度,增加用户体验,降低网络带宽占用
    apache内置有mod_deflate模块来启用gzip功能,但假如安装apache的时候没有编译相关模块,就需要你手动安装一次,以启用它:
    首先到你的apache源码目录,查找到mod_deflate.c文件
    Mac及Linux下都可用locate mod_deflate.c
    通常位置:apachehttpd源码目录/modules/filters/mod_deflate.c
    进入上面找到的目录运行下面的命令:
    /usr/local/apache/bin/apxs -i -c -a mod_deflate.c
    注:apxs目录请参照您自己的机器,通常在apache安装目录的bin目录下
    安装完成,到apache的modules目录看看是不是有了mod_deflates.so,如果有了这个文件,请编辑apache安装目录的conf/httpd.conf配置文件:
    LoadModule deflate_module modules/mod_deflate.so
    加载mod_deflate.so模块
    在httpd.conf里面的站点配置里增加如下内容:
    AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript
    DeflateCompressionLevel 9
    SetOutputFilter DEFLATE
    第一行代表对什么样的内容启用GZIP压缩,第二行代表压缩级别,第三行代表启用deflate模块对本站点的输出进行GZIP压缩(就是对所有输出启用压缩)
    重启apache httpd后可以查找一些gzip检测站点进行一下效果,通常压缩率都超过%50,可以有效增加访问速度及站点带宽利用率,Good Luck!
    可能的问题:
    问题:apache启动后问题,日志里出现mod_deflate.so:undefined symbol:inflateEnd
    解决:在LoadModule deflate_module modules/mod_deflate.so之前增加LoadFile /usr/local/lib/libz.so或LoadFile /usr/lib/libz.so
    注:具体libz.so位置自己locate查找一下。

    Apache 安装deflate 压缩模块
    yum install zlib-devel.i386
    usr/local/apache2/bin/apxs -i -a -c mod_deflate.c

    在load mod_deflate前加 LoadFile /usr/lib/libz.so

    ________________________________________________________________________________________________________________

    修改apache的config文件
    1、开始三个模块
    LoadModule deflate_module modules/mod_deflate.so
    #mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩
    LoadModule headers_module modules/mod_headers.so
    #mod_headers模块的作用是告诉浏览器页面使用了gzip压缩,如果不开启mod_headers那么浏览器就会对gzip压缩过的页面进行下载,而无法正常显示
    LoadModule headers_module modules/mod_filter.so
    #不增加过滤器模块启动apache会报“invalid commond 'AddOutputFilterByType'”的错误。原因是“AddOutputFilterByType DEFLATE text/*”这个配置中的AddOutputFilterByType命令是属于filter模块。
    2、增加压缩内容
    增加 <IfModule deflate_module>  模块配置:
    <IfModule deflate_module>  
    </ifModule>
    内容:
        SetOutputFilter DEFLATE    
        #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩
        SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary 
        #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
        SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary 
        #同上,就是设置不对exe,tgz,gz。。。的文件进行压缩
        SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
     
        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 MSIE !no-gzip !gzip-only-text/html
        # IE浏览器会伪装成 Netscape ,但是事实上它没有问题
    3、用page speed 查看一下压缩式是否有效或者www.webpagetest.org
    如果感觉不错,请 一个!
    by simpman
  • 相关阅读:
    yum安装工具的理解
    Linux防火墙
    Python的优雅写法
    Python的time模块
    Python中根据提供的日期,返回是一年中的第几天
    观察者模式
    数据插入INSERT
    RSA加密、解密、签名、校验签名
    js的apply和call
    js插件编程-tab框
  • 原文地址:https://www.cnblogs.com/simpman/p/3550683.html
Copyright © 2011-2022 走看看