网站优化一:apache开启gzip压缩配置详解

如果你服务器带宽很高就不需要做这步了,但是如果你想让你的带宽节省点开启你的gzip是必不可少,下面我们介绍了关于apache开启gzip压缩配置与用法和其它区别分享。

启动apache2的gzip

在http.conf里会找到如下行; 如果没有请加上

#LoadModule deflate_module modules/mod_deflate.so  去掉“#”号。表示已经启用了GZIP。

更多定制

开启了压缩功能.可以很好的使用了,如果你还想更详尽的定制的话,请看下面:

可以在http.conf后面加上这一段进行定制:(如非必要,用默认的就好了)

<ifmodule mod_deflate.c>
DeflateCompressionLevel 9
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php
AddOutputFilter DEFLATE js css
</ifmodule>

DeflateCompressionLevel 9是指压缩程度的等级,从1到9,9是最高等级。据了解,这样做最高可以减少8成大小的传输量(看档案内容而定),最少也能够节省一半。

DeflateCompressionLevel 预设可以采用 6 这个数值,以维持耗用处理器效能与网页压缩质量的平衡。


Web服务器处理HTTP压缩的过程如下:
    1. Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding 信息);

    2. 如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;

    3. 如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;

    4. 如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;

    5. 如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

    6. 如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。


第1步
LoadModule deflate_module modules/mod_deflate.so
LoadModule headers_module modules/mod_headers.so
打开httpd.conf后,先将上面两行配置前面的#号去掉,这样apache就会启用这两个模块,其中mod_deflate是压缩模块,就是对要传输到客户端的代码进行gzip压缩;mod_headers模块的作用是告诉浏览器页面使用了gzip压缩,如果不开启mod_headers那么浏览器就会对gzip压缩过的页面进行下载,而无法正常显示。

第2步 
在httpd.conf中加入以下代码,可以加到任何空白地方,不了解apache的朋友,如果担心加错地方,就放到http.conf文件的最后一行。如果是虚拟服务器可以写.htaccess文件里面,然后放在项目下即可。


<IfModule mod_deflate.c>
02     SetOutputFilter DEFLATE    #必须的,就像一个开关一样,告诉apache对传输到浏览器的内容进行压缩
03  
04     SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)$ no-gzip dont-vary #设置不对后缀gif,jpg,jpeg,png的图片文件进行压缩
05     SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary #同上,就是设置不对exe,tgz,gz。。。的文件进行压缩
06     SetEnvIfNoCase Request_URI .(?:pdf|mov|avi|mp3|mp4|rm)$ no-gzip dont-vary
07  
08     AddOutputFilterByType DEFLATE text/* #设置对文件是文本的内容进行压缩,例如text/html  text/css  text/plain等
09     AddOutputFilterByType DEFLATE application/ms* application/vnd* application/postscript application/javascript application/x-javascript #这段代码你只需要了解application/javascript application/x-javascript这段就可以了,这段的意思是对javascript文件进行压缩
10     AddOutputFilterByType DEFLATE application/x-httpd-php application/x-httpd-fastphp #这段是告诉apache对php类型的文件进行压缩
11  
12     BrowserMatch ^Mozilla/4 gzip-only-text/html # Netscape 4.x 有一些问题,所以只压缩文件类型是text/html的
13     BrowserMatch ^Mozilla/4.0[678] no-gzip # Netscape 4.06-4.08 有更多的问题,所以不开启压缩
14     BrowserMatch \bMSIE !no-gzip !gzip-only-text/html # IE浏览器会伪装成 Netscape ,但是事实上它没有问题
15 </IfModule>


本配置到这里apache中的gzip压缩就配置完成,重启apache后,新的配置就会生效。最后再用工具检查一下,果然分数提高了很多~呵呵。 不过开启gzip功能需要额外CPU资源开销。当然这里我们还不会重启apache因为下一步要配置http缓存,也就是mod_expires模块。


第1步

LoadModule expires_module modules/mod_expires.so

在httpd.conf中,找到上面的代码,然后将前面的#去掉

第2步

在httpd.conf中加入以下代码,可以加到任何空白地方,不了解apache的朋友,如果担心加错地方,就放到http.conf文件的最后一行。

<IfModule mod_expires.c>
    ExpiresActive On #激活http缓存,也就是个开关,必须有的一段代码
    ExpiresDefault A604800 #默认缓存时间为604800秒,也就是7天,A表示以客户端时间为准
    ExpiresByType text/css A3600 #对css文件缓存3600秒,也就是1小时,A表示以客户端时间为准
    ExpiresByType text/html A3600 #对html文件缓存3600秒,也就是1小时,A表示以客户端时间为准
    ExpiresByType application/x-javascript A3600 #对javascript文件缓存3600秒,也就是1小时,A表示以客户端时间为准
    ExpiresByType image/gif "access plus 2 month" #对gif图片缓存2个月,以客户端时间为准
    ExpiresByType image/jpeg "access plus 2 month" #对jpeg和jpg图片缓存2个月,以客户端时间为准
    ExpiresByType image/png "access plus 2 month" #对png图片缓存2个月,以客户端时间为准
    ExpiresByType image/x-icon "access plus 2 month" #对浏览器小图标缓存2个月,以客户端时间为准
    ExpiresByType application/x-shockwave-flash A2592000 #对flash文件缓存2592000秒,也就是1个月,A表示以客户端时间为准

    #特别注意也可以使用 ExpiresByType text/css M3600  这里的M表示以文件最后修改时间为准缓存1小时,例如有些时候,我们的HTML是大批量定时更新的,这个时候就可以用到M

  Header unset Pragma #删除掉http头信息中的Pragma,不懂的可以google一下Pragma,他也是控制浏览器缓存的,不过是用于http1.0标准
  FileETag None
  Header unset ETag #这段代码和上面一段的作用是不使用http1.1标准中的ETag属性
  <FilesMatch "\.(js|css|ico|pdf|flv|jpg|jpeg|png|gif|mp3|mp4|swf)$"> #针对js|css|ico等后缀的文件进行单独设置
  #Header set Expires "Thu, 15 Apr 2013 20:00:00 GMT"
  Header unset Last-Modified #不使用http头信息中的Last-Modified属性,Last-Modified是指文件最后修改时间
  Header append Cache-Control "public" #设置为可被任何缓存区缓存
  </FilesMatch>
</IfModule>


在对mod_gzip和mod_defalate的区别进行解说一下:


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 加载速度更快。



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值