} } }

    Apache开启GZIP 紧缩网页

    添加时间:2013-7-1 点击量:

    起首我们先懂得Apache Gzip的相干材料。


    一、gzip介绍


    Gzip是一种风行的文件紧缩算法,如今的应用十分广泛,尤其是在Linux平台。当应用Gzip紧缩到一个纯文本文件时,结果是很是明显的,大约可以削减70%以上的文件大小。这取决于文件中的内容。 哄骗Apache中的Gzip模块,我们可以应用Gzip紧缩算法来对Apache办事器公布的网页内容进行紧缩后再传输到客户端浏览器。如许经过紧缩后实际高低降了收集传输的字节数,最明显的益处就是可以加快网页加载的速度。


    网页加载速度加快的益处不问可知,除了节俭流量,改良用户的浏览体验外,另一个潜伏的益处是Gzip与搜刮引擎的抓取对象有着更好的关系。


    二、Web办事器处理惩罚


    HTTP紧缩的过程如下:


    Web办事器接管到浏览器的HTTP恳求后,搜检浏览器是否支撑HTTP紧缩(Accept-Encoding 信息);


    若是浏览器支撑HTTP紧缩,Web办事器搜检恳求文件的后缀名;


    若是恳求文件是HTML、CSS等静态文件,Web办事器到紧缩缓冲目次中搜检是否已经存在恳求文件的新紧缩文件;


    若是恳求文件的紧缩文件不存在,Web办事器向浏览器返回未紧缩的恳求文件,并在紧缩缓冲目次中存放恳求文件的紧缩文件;


    若是恳求文件的新紧缩文件已经存在,则直接返回恳求文件的紧缩文件;


    若是恳求文件是动态文件,Web办事器动态紧缩内容并返回浏览器,紧缩内容不存放到紧缩缓存目次中。


    三、开启Gzip


    Apache哄骗Gzip紧缩算法进行紧缩的模块有两种:mod_gzip 和mod_deflate。


    如今浏览器本身也主动Gzip紧缩功能,支撑Accept-Encoding: gzip,deflate ,这里我在firefox浏览器下测试。 



    经由过程查看HTTP头,我们可以快速断定应用的客户端浏览器是否支撑接管gzip紧缩。


    若发送的HTTP头中呈现以下信息,则注解你的浏览器支撑接管响应的gzip紧缩:


    Accept-Encoding: gzip 支撑mod_gzip


    Accept-Encoding: deflate 支撑mod_deflate


    Accept-Encoding: gzip,deflate


    同时支撑mod_gzip 和mod_deflate Apache内置有mod_deflate模块来启用gzip功能,但假如安装apache的时辰没有编译相干模块,就须要你手动安装一次,以启用它:


    起首到你的apache源码目次,查找到mod_deflate.c文件 ,凡是地位:apachehttpd源码目次/modules/filters/mod_deflate.c,进入上方找到的目次运行下面的号令:


    /usr/local/apache2/bin/apxs -i -c -a mod_deflate.c


    注:apxs目次请参照您本身的机械,凡是在apache安装目次的bin目次下。


    安装完成,到apache的modules目次看看是不是有了mod_deflates.so,httpd.conf中打开deflate_Module和headers_Module模块:


    LoadModule deflate_module modules/mod_deflate.so


    加载mod_deflate.so模块,默认安装会主动写入httpd.conf。


    若是办事器开启了对Gzip组件的支撑,那么我们就可以在http.conf定制文件紧缩,下面是一个设备的简单实例:


    1、mod_gzip体式格式


    # mod_gzip



    <ifModule mod_gzip.c>
    

    mod_gzip_on Yes

    mod_gzip_dechunk Yes

    mod_gzip_item_include file \.(html?|txt|css|js|php|pl)¥

    mod_gzip_item_include handler ^cgi-script¥

    mod_gzip_item_include mime ^text/.

    mod_gzip_item_include mime ^application/x-javascript.

    mod_gzip_item_exclude rspheader ^Content-Encoding:.gzip.

    <ifModule>



    2、deflate_Module体式格式 


    (1)严格匹配文件类型


    # mod_deflate



    <ifmodule mod_deflate.c>
    

    DeflateCompressionLevel 6 #紧缩率, 6是建议值.

    AddOutputFilterByType DEFLATE text/plain

    AddOutputFilterByType DEFLATE text/html

    AddOutputFilterByType DEFLATE text/php

    AddOutputFilterByType DEFLATE text/xml

    AddOutputFilterByType DEFLATE text/css

    AddOutputFilterByType DEFLATE text/javascript

    AddOutputFilterByType DEFLATE application/xhtml+xml

    AddOutputFilterByType DEFLATE application/xml

    AddOutputFilterByType DEFLATE application/rss+xml

    AddOutputFilterByType DEFLATE application/atom_xml

    AddOutputFilterByType DEFLATE application/x-javascript

    AddOutputFilterByType DEFLATE application/x-httpd-php

    AddOutputFilterByType DEFLATE image/svg+xml

    AddOutputFilterByType DEFLATE image/gif image/png image/jpe image/swf image/jpeg image/bmp

    # Don’t compress images and other #打消不须要紧缩的文件

    BrowserMatch ^Mozilla/4 gzip-only-text/html

    BrowserMatch ^Mozilla/4\.0[678] no-gzip

    BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

    SetEnvIfNoCase Request_URI .(?:html|htm)¥ no-gzip dont-varySetEnvIfNoCase

    #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

    </ifmodule>


    (2)过滤文件类型


    # mod_deflate



    <ifmodule mod_deflate.c>
    

    DeflateCompressionLevel 6

    SetOutputFilter DEFLATE #紧缩所有文件

    #Don’t compress images and other #过滤不须要紧缩文件

    #SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)¥ no-gzip dont-vary

    SetEnvIfNoCase Request_URI .(?:html|htm)¥ 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

    </IfModule>



    文件MIME类型可以按照本身景象添加,也可以经由过程浏览器查看connect-type:




    四、mod_gzip 和mod_deflate的首要差别是什么?(来自互联网)


    起首一个差别是安装它们的Apache Web办事器版本的差别。Apache 1.x系列没有内建网页紧缩技巧,所以才去用额外的第三方mod_gzip 模块来履行紧缩。而Apache 2.x官方在开辟的时辰,就把网页紧缩推敲进去,内建了mod_deflate 这个模块,用以庖代mod_gzip。固然两者都是应用的Gzip紧缩算法,它们的运作道理是类似的。 第二个差别是紧缩质量。mod_deflate 紧缩速度略快而mod_gzip 的紧缩比略高。一般默认景象下,mod_gzip 会比mod_deflate 多出4%~6%的紧缩量。 那么,为什么应用mod_deflate?第三个差别是对办事器资料的占用。 一般来说mod_gzip 对办事器CPU的占用要高一些。mod_deflate 是专门为确保办事器的机能而应用的一个紧缩模块,mod_deflate 须要较少的资料来紧缩文件。这意味着在高流量的办事器,应用mod_deflate 可能会比mod_gzip 加载速度更快。  


    五、结果


    没有启动Gzip紧缩:



    启动Gzip紧缩:



    大小由10.7K到1.5K,若是文件较大,那么结果会更明显。



                                                                                                                  (伪原创)

    读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。
    分享到: