当前位置 主页 > 服务器问题 > Linux/apache问题 >

    Apache启用GZIP压缩网页传输方法

    栏目:Linux/apache问题 时间:2018-11-03 13:39

    上一篇文章我们已经介绍了Apache启用GZIP压缩网页的方法,这里又发现了一篇好文章,特分享给大家

    首先我们先了解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.*