解析Linu空间用Gzip对网页内容进行压缩_第1页
解析Linu空间用Gzip对网页内容进行压缩_第2页
解析Linu空间用Gzip对网页内容进行压缩_第3页
解析Linu空间用Gzip对网页内容进行压缩_第4页
解析Linu空间用Gzip对网页内容进行压缩_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用mod_gzip和mod_deflate对网页内容进行压缩Gzip是一种流行的文件压缩算法,现在的应用十分广泛,尤其是在Linux平台。当应用Gzip压缩到一个纯文本文件时,效果是非常明显的,大约可以减少70%以上的文件大小。这取决于文件中的内容。利用Apache中的Gzip模块,我们可以使用Gzip压缩算法来对Apache服务器发布的网页内容进行压缩后再传输到客户端浏览器。这样经过压缩后实际上降低了网络传输的字节数,最明显的好处就是可以加快网页加载的速度。网页加载速度加快的好处不言而喻,除了节省流量,改善用户的浏览体验外,另一个潜在的好处是Gzip与搜索引擎的抓取工具有着更好的关系。例如Google就可以通过直接读取gzip文件来比普通手工抓取更快地检索网页。在Google网站管理员工具(GoogleWebmasterTools)中你可以看到,sitemap.xml.gz是直接作为Sitemap被提交的。而这些好处并不仅仅限于静态内容,PHP动态页面和其他动态生成的内容均可以通过使用Apache压缩模块压缩,加上其他的性能调整机制和相应的服务器端缓存规则,这可以大大提高网站的性能。因此,对于部署在Linux服务器上的PHP程序,在服务器支持的情况下,我们建议你开启使用GzipWeb压缩。二、GzipWeb压缩工作原理Web服务器处理HTTP压缩的过程如下:Web服务器接收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding信息);如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名;如果请求文件是HTML、CSS等静态文件,Web服务器到压缩缓冲目录中检查是否已经存在请求文件的最新压缩文件;如果请求文件的压缩文件不存在,Web服务器向浏览器返回未压缩的请求文件,并在压缩缓冲目录中存放请求文件的压缩文件;如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;

如果请求文件是动态文件,Web服务器动态压缩内容并返回浏览器,压缩内容不存放到压缩缓存目录中。下面是两个演示图:未使用Gzip:HTTPRequestandResponseCompressedHTTPResponsE三、让我们开始吧!Apache上利用Gzip压缩算法进行压缩的模块有两种:mod_gzip和mod_deflate。要使用GzipWeb压缩,请首先确定你的服务器开启了对这两个组件之一的支持。在Linux服务器上,现在已经有越来越多的空间商开放了对它们的支持,有的甚至是同时支持这两个模块的。例如目前Godaddy、Bluehost及DreamHosts等空间商的服务器都已同时支持mod_gzip和mod_deflate。

虽然使用Gzip同时也需要客户端浏览器的支持,不过不用担心,目前大部分浏览器都已经支持Gzip了,如IE、MozillaFirefox、Opera、Chrome等。通过查看HTTP头,我们可以快速判断使用的客户端浏览器是否支持接受gzip压缩。若发送的HTTP头中出现以下信息,则表明你的浏览器支持接受相应的gzip压缩:Accept-Encoding:gzip支持mod_gzipAccept-Encoding:deflate支持mod_deflateAccept-Encoding:gzip,deflate同时支持mod_qzip和mod_deflate如果服务器开启了对Gzip组件的支持,那么我们就可以在http.conf或.htaccess里面进行定制,下面是一个.htaccess配置的简单实例:以下为引用的内容:#mod_gzip:<ifModulemod_gzip.c>

mod_gzip_onYes

mod_gzip_dechunkYes

mod_gzip_item_includefile\.(html?|txt|css|js|php|pl)$

mod_gzip_item_includehandler人cgi-script$

mod_gzip_item_includemime人text/.*mod_gzip_item_includemime人application/x-javascript.*

mod_gzip_item_excluderspheader人Content-Encoding:.*gzip.*</ifModule>以下为引用的内容:#mod_deflate:<ifmodulemod_deflate.c>DeflateCompressionLevel6#压缩率,6是建议值.AddOutputFilterByTypeDEFLATEtext/plainAddOutputFilterByTypeDEFLATEtext/htmlAddOutputFilterByTypeDEFLATEtext/xmlAddOutputFilterByTypeDEFLATEtext/cssAddOutputFilterByTypeDEFLATEtext/javascriptAddOutputFilterByTypeDEFLATEapplication/xhtml+xmlAddOutputFilterByTypeDEFLATEapplication/xmlAddOutputFilterByTypeDEFLATEapplication/rss+xmlAddOutputFilterByTypeDEFLATEapplication/atom_xml

AddOutputFilterByTypeDEFLATEapplication/x-javascript

AddOutputFilterByTypeDEFLATEapplication/x-httpd-php

AddOutputFilterByTypeDEFLATEimage/svg+xml</ifmodule>里面的文件MIME类型可以根据自己情况添加,至于PDF、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,反而可能会因为增加CPU的处理时间及浏览器的渲染问题而降低性能。所以就没必要再通过Gzip压缩。通过以上设置后再查看返回的HTTP头,出现以下信息则表明返回的数据已经过压缩。即网站程序所配置的Gzip压缩已生效。Content-Encoding:gzip注:不管使用mod_gzip还是mod_deflate,此处返回的信息都一样。因为它们都是实现的gzip压缩方式。除此之外,还可以通过一些在线检测工具(如:/http_compression/)来检测你的网站内容是否已经过Gzip压缩。四、mod_gzip和mod_deflate的主要区别是什么?使用哪个更好呢?首先一个区别是安装它们的ApacheWeb服务器版本的差异。Apache1.x系列没有内建网页压缩技术,所以才去用额外的第三方mod_gzip模块来执行压缩。而Apache2.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将会是更好的选择。

另夕卜,从Apache2.0.45开始,mod_deflate可使用DeflateCompressionLevel指令来设置压缩级别。该指令的值可为1至(压缩速度最快,最低的压缩质量)9(最慢的压缩速度,压缩率最高)之间的整数,其默认值为6(压缩速度和压缩质量较为平衡的值)。这个简单的变化更是使得mod_deflate可以轻松媲美mod_gzip的压缩。P.S.对于没有启用以上两种Gzip模块的虚拟空间,还可以退而求其次使用php的zlib函数库(同样需要查看服务器是否支持)来压缩文件,只是这种方法使用起来比较麻烦,而且一般会比较耗费服务器资源,请根据情况慎重使用。Linux空间不支持mod_gzip、mod_deflate模块Linux空间不支持mod_gzip、mod_deflate模块,若想通过GZIP压缩网页内容,可以考虑两种方式,开启zlib.output_compression或者通过ob_gzhandler编码的方式。zlib.output_compression是在对网页内容压缩的同时发送数据至客户端,ob_gzhandler是等待网页内容压缩完毕后才进行发送,相比之下前者效率更高,但需要注意的是,两者不能同时使用,只能选其一,否则将出现错误。下文仅针对GoDaddyDeluxeHosting-Linux空间,对两者的实现方式做简单描述。在默认情况下,zlib.output_compression是关闭的,如需开启需编辑php5.ini文件,加入以下内容:以下为引用的内容:zlib.output_compression=On

zlib.output_compression_level=6然后将php5.ini上传到FTP根目录下,剩下的事请就是等待它生效,这可能需要一段时间,可以通过phpinfo()函数检测结果:以下为引用的内容:Directive LocalValueMasterValuezlib.output_compressionOn Onzlib.output_compression_level6 6当zlib.output_compression的LocalValue和MasterValue的值同为On时,表示已经生效,这时候访问的PHP页面(包括伪静态页面)已经GZIP压缩了,通过Firebug或者在线网页GZIP压缩检测工具可检测到压缩的效果。

如果需要使用ob_gzhandler,则需关闭zlib.output_compression,把php5.ini文件内容更改为:以下为引用的内容:zlib.output_compression=Off

zlib.output_compression_level=-1ob_gzhandler是GoDaddy官网推荐的用法,通过在PHP文件中插入相关代码实现GZIP压缩,以下是GoDaddy帮助中心所提到的:GZIPCompressionSmallerpagesloadfaster,regardlessofyourInternetconnectionspeed.Youcanmakeyour

pagessmallerbycompressingthemwithGZIP.FormoreinformationaboutGZIPandourhosting,

seeCompressingWebPagesforFasterLoadTimes.《CompressingWebPagesforFasterLoadTimes》文中提到,将以下PHP代码加入到PHP文件顶部,即可实现GZIP压缩。以下为引用的内容:<?php

if(substr_count($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论