gzip 是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在 Linux 平台。当应用 gzip 压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。这取决于文件中的内容。
利用 Apache 中的 gzip 模块,我们可以使用 gzip 压缩算法来对 Apache 服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。
网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是 gzip 与搜索引擎的抓取工具有着更好的关系。例如 Google 就可以通过直接读取 gzip 文件来比普通手工抓取更快地检索网页。在 Google 网站管理员工具(Google Webmaster Tools)中你可以看到,sitemap.xml.gz 是直接作为 sitemap 被提交的。
而这些好处并不仅仅限于静态内容,php 动态页面和其他动态生成的内容均可以通过使用 Apache 压缩模块压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能。因此,对于部署在 Linux 服务器上的 php 程序,在服务器支持的情况下,建议你开启 Apache 的网页压缩功能。
让我们开始吧!
虽然 gzip 需要客户端浏览器的支持,不过不用担心,目前大部分浏览器都已经支持 gzip 了,如 IE、Mozilla Firefox、Opera、Chrome 等。
Aapache 上利用 gzip 压缩算法进行压缩的模块有两种:mod_gzip 和 mod_deflate。要使用 gzip web压缩,请首先确定你的服务器开启了对这两个组件之一的支持。在 Linux 服务器上,现在已经有越来越多的空间商开放了对它们的支持,有的甚至是同时支持这两个模块的。例如目前 Bluehost 和 Godaddy 的服务器都已同时支持 mod_gzip 和 mod_deflate。
如果服务器开启了对 gzip 组件的支持,那么我们就可以在 httpd.conf 里面进行定制,请参考如下内容:
mod_gzip: 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.* mod_deflate: DeflateCompressionLevel 6 #压缩率, 6是建议值. SetOutputFilter DEFLATE 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
里面的文件 MIME 类型可以根据自己情况添加,至于 PDF、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,反而可能会因为增加 CPU 的处理时间及浏览器的渲染问题而降低性能,所以就没必要再通过 gzip 压缩。配置完成后,可以使用站长工具来在线查看是否生效。
mod_gzip 和 mod_deflate 的主要区别是什么?使用哪个更好呢?
首先一个区别是安装它们的 Apache 服务器版本的差异。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 加载速度更快。
还是不明白?简而言之,如果你的网站,每天不到1000独立访客,想要加快网页的加载速度,就使用 mod_gzip。虽然会额外耗费一些服务器资源,但也是值得的。如果你的网站每天超过1000独立访客,并且使用的是共享的虚拟主机,所分配系统资源有限的话,使用 mod_deflate,将会是一个更好的选择。
另外,从 Apache 2.0.45 开始,mod_deflate 可使用 DeflateCompressionLevel 指令来设置压缩级别。该指令的值可为1至(压缩速度最快,最低的压缩质量)9(最慢的压缩速度,压缩率最高)之间的整数,其默认值为6(压缩速度和压缩质量比较为平衡的值)。这个简单的变化更是使得 mod_deflate 可以轻松媲美 mod_gzip 的压缩。
转载请注明:爱开源 » 启用 Apache 的网页压缩功能