mod_gzip和mod_deflate压缩区别

字体大小: 中小 标准 ->行高大小: 标准
为什么使用Gzip Web压缩?

Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台。
当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。这取决于文件中的内容。

利用Apache中的gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。

网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如 Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。在Google网站管理员工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作为Sitemap被提交的。

而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能。

因此,对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,建议你开启使用Gzip Web压缩。

让我们开始吧!

虽然Gzip需要客户端浏览器的支持,不过不用担心,目前大部分浏览器都已经支持Gzip了,如IE、Mozilla Firefox、Opera、Chrome等。

Aapache上利用Gzip压缩算法进行压缩的模块有两种:mod_gzip 和mod_deflate。要使用Gzip Web压缩,请首先确定你的服务器开启了对这两个组件之一的支持。在Linux服务器上,现在已经有越来越多的空间商开放了对它们的支持,有的甚至是同时 支持这两个模块的。例如目前Bluehost和Godaddy的服务器都已同时支持mod_gzip 和mod_deflate。

如果服务器开启了对Gzip组件的支持,那么我们就可以在http.conf或.htaccess里面进行定制,下面是一个.htaccess配置的实例:

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>
mod_deflate: 
复制内容到剪贴板 
代码:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 6 #压缩率, 6是建议值.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
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
</ifmodule>
里面的文件MIME类型可以根据自己情况添加,至于PDF 、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,反而可能会因为增加CPU的处理时间及浏览器的渲染问题而降低性能。所以就没必要再通过Gzip压缩。

mod_gzip 和mod_deflate的主要区别是什么?使用哪个更好呢?

首先一个区别是安装它们的Apache Web服务器版本的差异。Apache 1.x系列没有内建网页压缩技术,所以才去用额外的mod_gzip模块来执行压缩。而Apache 2官方在开发的时候,就把网页压缩考虑进去,内建了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加载速度更快。

还是不明白?简而言之,如果你的网站,每天不到1000独立访客,想要加快网页的加载速度,就使用mod_gzip。虽然会额外耗费一些服务器资源,但也 是值得的。如果你的网站每天超过1000独立访客,并且使用的是共享的虚拟主机,所分配系统资源有限的话,使用mod_deflate,将会是一个更好的 选择。

另外,从Apache 2.0.45开始,mod_deflate可使用DeflateCompressionLevel指令来设置压缩级别。该指令的值可为1至(压缩速度最 快,最低的压缩质量)9(最慢的压缩速度,压缩率最高)之间的整数,其默认值为6(压缩速度和压缩质量比较为平衡的值)。这个简单的变化更是使得 mod_deflate可以轻松媲美mod_gzip的压缩。

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67206.html