gzip简介gzip是GNU zip的缩写,是GNU自由软件的文件压缩程序,常用来表示gzip为文件格式。该软件的作者是让-卢普盖利和马克阿德勒。1992年10月31日首次发布,版本号为0.1,目前稳定版本为1.2.4。Gzip主要用于Unix系统中的文件压缩。我们经常使用带后缀的文件。Linux中的gz,它们是GZIP格式的。如今,它已经成为互联网上使用的一种非常常见的数据压缩格式,或文件格式。当Gzip压缩应用于纯文本文件时,效果非常明显。GZIP压缩后,页面大小可以更改为40%甚至更小,具体取决于文件的内容。HTTP协议上的GZIP编码是一种用于提高WEB应用程序性能的技术。在web开发中,gzip可以压缩页面来减少网站的流量,但是gzip并没有占用大量的cpu,只有几个百分点,但是可以压缩页面30%以上,非常划算。借助Apache中的Gzip模块,我们可以使用Gzip压缩算法对Apache服务器发布的网页内容进行压缩,然后传输到客户端浏览器。这种压缩实际上减少了网络传输的字节数(节省了传输的网络I/o),最明显的优点就是可以加快网页的加载速度。加快网页速度的好处不言而喻。除了节省流量,提升用户浏览体验,另一个潜在的好处是Gzip与搜索引擎的抓取工具有更好的关系。例如,谷歌通过直接读取gzip文件,检索网页的速度比普通的手动抓取要快。在谷歌网站管理员工具中,你可以看到Sitemap.xml.gz是作为网站地图直接提交的。这些好处不仅限于静态内容。PHP动态页面等动态生成的内容可以通过Apache压缩模块进行压缩,其他性能调整机制和相应的服务器端缓存规则可以大大提高网站的性能。因此,对于部署在Linux服务器上的PHP程序,我们建议您在服务器的支持下开始使用Gzip Web压缩。第二,Web服务器处理HTTP压缩的方式如下:1。web服务器收到浏览器的HTTP请求后,检查浏览器是否支持HTTP压缩(Accept-Encoding信息);2.如果浏览器支持HTTP压缩,Web服务器检查请求文件的后缀名称;3.如果请求的文件是静态文件,如HTML、CSS等。Web服务器检查所请求文件的最新压缩文件是否已经存在于压缩缓冲目录中;4.如果请求文件的压缩文件不存在,Web服务器将未压缩的请求文件返回给浏览器,并将请求文件的压缩文件存储在压缩缓冲目录中;5.如果请求文件的最新压缩文件已经存在,则直接返回请求文件的压缩文件;6.如果请求的文件是动态文件,Web服务器会动态压缩内容并将其返回给浏览器,压缩后的内容不会存储在压缩缓存目录中。下面是两个示范图:不使用gzip:(9500 . 163.com)。
使用Gzip后:
3.启用apache的gzip功能Apache上有两个模块使用Gzip压缩算法进行压缩:mod_gzip和mod_deflate。要使用Gzip网络压缩,请确保您的服务器支持这两个组件之一。虽然使用Gzip需要客户端浏览器的支持,但不用担心,大多数浏览器已经支持Gzip了,比如IE、Mozilla Firefox、Opera和Chrome。通过查看HTTP头,我们可以快速判断使用的客户端浏览器是否支持接受gzip压缩。如果发送的HTTP头中出现以下信息,那么你的浏览器支持接受对应的gzip压缩:复制代码如下: accept-encoding 3360 gzip支持mod _ gzip accept-encoding : deflate支持mod _ deflate accept-encoding : gzip。Deflate同时支持mod_gzip和mod_deflate,比如firebug查看:。
接受-编码: gzip,放气是同时支持mod_gzip和mod_deflate如果服务器开启了对Gzip组件的支持,那么我们就可以在http.conf或htaccess .里面进行定制,下面是一个htaccess .配置的简单实例:mod_gzip的配置:复制代码代码如下: # mod _ gzip:if模块mod _ gzip。c mod _ gzip _ on Yes mod _ gzip _ dec hunk Yes mod _ gzip _ item _ include文件 .(html?| txt | CSS | js | PHP | pl)$ mod _ gzip _ item _ include handler ^cgi-script$ mod _ gzip _ item _ include mime ^text/.* mod _ gzip _ item _包含哑剧演员^application/x-javascript.* mod _ gzip _ item _排除皇家^content-encoding:*gzip .* ifModule mod_deflate的配置实例:打开打开街头流氓配置文件httpd.conf将#加载模块deflate _ modules/mod _ deflate。因此去除开头的#号复制代码代码如下: # mod _ deflate:if模块mod _ deflate。c放气压缩级别6 #压缩率, 6是建议值AddOutputFilterByType DEFLATE文本/普通AddOutputFilterByType DEFLATE文本/html AddOutputFilterByType DEFLATE文本/XML AddOutputFilterByType DEFLATE文本/CSS AddOutputFilterBytype DEFLATE文本/JAVAScript AddOutputFilterBytype DEFLATE应用程序/XHTML XML AddOutputFilterByType DEFLATE应用程序/XML AddOutputFilterByType DEFLATE应用程序/atom _ XML AddOutputFilterByType DEFLATE应用程序/x-JAVAScript AddOutputFilterBytype DEFLATE应用程序/x里面的文件哑剧类型可以根据自己情况添加,至于PDF、图片、音乐文档之类的这些本身都已经高度压缩格式,重复压缩的作用不大,反而可能会因为增加中央处理器的处理时间及浏览器的渲染问题而降低性能。所以就没必要再通过Gzip压缩。通过以上设置后再查看返回的超文本传送协议头,出现以下信息则表明返回的数据已经过压缩。即网站程序所配置的Gzip压缩已生效内容-编码: gzipfirebug查看
注意:1)无论是使用mod_gzip还是mod_deflate,这里返回的信息都是一样的。因为都是gzip压缩方法。2)CompressionLevel 9是指压缩程度(设定压缩比)的等级,其值范围为1-9,9为最高等级。据了解,这可以将传输量减少高达80%(取决于文件内容),至少节省一半。默认情况下,压缩级别可以设置为6,以保持处理器消耗和网页压缩质量之间的平衡。不建议设置得太高。如果设置过高,虽然压缩率高,但会占用更多的CPU资源。3)对于jpg等压缩图片格式,mp3等音乐文件,zip等压缩文件,无需再次压缩。4.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加载得更快。不太明白?简而言之,如果你的网站每天的独立访问者少于1000人,并且想要加快网页的加载速度,那么就使用mod_gzip。虽然会消耗一些额外的服务器资源,但还是值得的。如果你的网站每天有1000多个独立访客,使用共享虚拟主机,分配的系统资源有限,使用mod_deflate会是更好的选择。此外,从Apache 2.0.45开始,mod_deflate可以使用放气压缩级别指令来设置压缩级别。该指令的值可以是1(最快的压缩速度,最低的压缩质量)和9(最慢的压缩速度,最高的压缩率)之间的整数,其默认值是6(压缩速度和压缩质量平衡的值)。这个简单的改变使得mod_deflate很容易与mod_gzip压缩相媲美。P.S .对于没有启用以上两个Gzip模块的虚拟空间,也可以使用php的zlib函数库压缩文件(也需要检查服务器是否支持)。但是这种方法使用起来比较麻烦,一般会消耗服务器资源,请根据情况谨慎使用。压缩服务器不支持mod_GZIP和mod_deflate模块。如果想通过gzip压缩网页内容,可以考虑两种方式,即打开zlib.output_compression或者通过ob_gzhandler进行编码。1)zlib.output_compression是对网页内容进行压缩,并将数据发送给客户端。2)网页内容压缩后发送ob_gzhandler。与前者相比,效率更高。但是需要注意的是,两者不能同时使用,只能选择一个,否则会出现错误。
两者的实现方式做简单描述:1.zlib.output _压缩实现方式在默认情况下,zlib.output_compression是关闭:复制代码代码如下:使用zlib库的透明输出压缩;此选项的有效值为"关"、"开"或特定的缓冲区大小;用于压缩(默认值为4KB);注:结果块大小可能因压缩性质而异PHP .输出几百字节的块,结果是;压缩。如果你喜欢更大的块更好;性能,另外启用输出缓冲.注意:您需要使用zlib.output_handler而不是标准的;输出处理程序,否则输出将被破坏。http://php.net/zlib.output-compression输出压缩=关闭;http://php.net/zlib.output-compression-level;兹利布。output _ compression _ level=-1如需开启需编辑php.ini文件,加入以下内容:复制代码代码如下输出压缩=开输出压缩级别=6可以通过phpinfo()函数检测结果。当zlib.output _压缩的本地价值和主价值的值同为在时,表示已经生效,这时候访问的服务器端编程语言(专业超文本预处理器的缩写)页面(包括伪静态页面)已经GZIP压缩了,通过萤火虫或者在线网页GZIP压缩检测工具可检测到压缩的效果2.ob_gzhandler的实现方式如果需要使用ob_gzhandler,则需关闭zlib.output_compression,把php.ini文件内容更改为:zlib。output _ compression=Off zlib。output _ compression _ level=-1通过在服务器端编程语言(专业超文本预处理器的缩写)文件中插入相关代码实现GZIP压缩P压缩:复制代码代码如下: if(extension _ loaded(' zlib '){ if(!headers _ send()AND被设置($ _ SERVER[' HTTP _ ACCEPT _ ENCODING '])strpos($ _ SERVER[' HTTP _ ACCEPT _ ENCODING '],' gzip ')!==FALSE) //页面没有输出且浏览器可以接受GZIP的页面{ ob _ start(' ob _ gzhandler ');} } //待压缩的内容回声$上下文;ob _ end _ flush();不管是zlib.output _压缩还是ob_gzhandler,都仅能对服务器端编程语言(专业超文本预处理器的缩写)文件进行GZIP压缩,对于HTML、CSS、JS等静态文件只能通过调用服务器端编程语言(专业超文本预处理器的缩写)的方式实现。最后想说的是,现在主流的浏览器默认使用的是HTTP1.1协议,基本都支持GZIP压缩,对于工业管理学(工业工程)而言,假如你没有选中其菜单栏工具——《互联网》选项-》高级-》HTTP 1.1设置-》使用HTTP 1.1,那么,你将感受不到网页压缩后的速度提升所带来的快感!