-
Apache开启GZIP 紧缩网页
添加时间:2013-7-1 点击量:起首我们先懂得Apache Gzip的相干材料。
一、gzip介绍
Gzip是一种风行的文件紧缩算法,如今的应用十分广泛,尤其是在Linux平台。当应用Gzip紧缩到一个纯文本文件时,结果是很是明显的,大约可以削减70%以上的文件大小。这取决于文件中的内容。 哄骗Apache中的Gzip模块,我们可以应用Gzip紧缩算法来对Apache办事器公布的网页内容进行紧缩后再传输到客户端浏览器。如许经过紧缩后实际高低降了收集传输的字节数,最明显的益处就是可以加快网页加载的速度。
网页加载速度加快的益处不问可知,除了节俭流量,改良用户的浏览体验外,另一个潜伏的益处是Gzip与搜刮引擎的抓取对象有着更好的关系。
二、Web办事器处理惩罚
HTTP紧缩的过程如下:
Web办事器接管到浏览器的HTTP恳求后,搜检浏览器是否支撑HTTP紧缩(Accept-Encoding 信息);
若是浏览器支撑HTTP紧缩,Web办事器搜检恳求文件的后缀名;
若是恳求文件是HTML、CSS等静态文件,Web办事器到紧缩缓冲目次中搜检是否已经存在恳求文件的新紧缩文件;
若是恳求文件的紧缩文件不存在,Web办事器向浏览器返回未紧缩的恳求文件,并在紧缩缓冲目次中存放恳求文件的紧缩文件;
若是恳求文件的新紧缩文件已经存在,则直接返回恳求文件的紧缩文件;
若是恳求文件是动态文件,Web办事器动态紧缩内容并返回浏览器,紧缩内容不存放到紧缩缓存目次中。
三、开启Gzip
Apache哄骗Gzip紧缩算法进行紧缩的模块有两种:mod_gzip 和mod_deflate。
如今浏览器本身也主动Gzip紧缩功能,支撑Accept-Encoding: gzip,deflate ,这里我在firefox浏览器下测试。
经由过程查看HTTP头,我们可以快速断定应用的客户端浏览器是否支撑接管gzip紧缩。
若发送的HTTP头中呈现以下信息,则注解你的浏览器支撑接管响应的gzip紧缩:
Accept-Encoding: gzip 支撑mod_gzip
Accept-Encoding: deflate 支撑mod_deflate
Accept-Encoding: gzip,deflate
同时支撑mod_gzip 和mod_deflate Apache内置有mod_deflate模块来启用gzip功能,但假如安装apache的时辰没有编译相干模块,就须要你手动安装一次,以启用它:
起首到你的apache源码目次,查找到mod_deflate.c文件 ,凡是地位:apachehttpd源码目次/modules/filters/mod_deflate.c,进入上方找到的目次运行下面的号令:
/usr/local/apache2/bin/apxs -i -c -a mod_deflate.c
注:apxs目次请参照您本身的机械,凡是在apache安装目次的bin目次下。
安装完成,到apache的modules目次看看是不是有了mod_deflates.so,httpd.conf中打开deflate_Module和headers_Module模块:
LoadModule deflate_module modules/mod_deflate.so
加载mod_deflate.so模块,默认安装会主动写入httpd.conf。
若是办事器开启了对Gzip组件的支撑,那么我们就可以在http.conf定制文件紧缩,下面是一个设备的简单实例:
1、mod_gzip体式格式
# 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>
2、deflate_Module体式格式
(1)严格匹配文件类型
# mod_deflate:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 6 #紧缩率, 6是建议值.
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/php
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
AddOutputFilterByType DEFLATE image/gif image/png image/jpe image/swf image/jpeg image/bmp
# Don’t compress images and other #打消不须要紧缩的文件
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:html|htm)¥ no-gzip dont-varySetEnvIfNoCase
#SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)¥ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)¥ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc)¥ no-gzip dont-vary
</ifmodule>(2)过滤文件类型
# mod_deflate:
<ifmodule mod_deflate.c>
DeflateCompressionLevel 6
SetOutputFilter DEFLATE #紧缩所有文件
#Don’t compress images and other #过滤不须要紧缩文件
#SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png)¥ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:html|htm)¥ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:exe|t?gz|zip|bz2|sit|rar)¥ no-gzip dont-vary
SetEnvIfNoCase Request_URI .(?:pdf|doc)¥ no-gzip dont-vary
</IfModule>
文件MIME类型可以按照本身景象添加,也可以经由过程浏览器查看connect-type:
四、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 加载速度更快。
五、结果
没有启动Gzip紧缩:
启动Gzip紧缩:
大小由10.7K到1.5K,若是文件较大,那么结果会更明显。
(伪原创)
读书,不要想着实用,更不要有功利心。读书只为了自身的修养。邂逅一本好书如同邂逅一位知己,邂逅一个完美之人。有时心生敬意,有时怦然心动。仿佛你心底埋藏多年的话,作者替你说了出来,你们在时光深处倾心相遇的一瞬间,情投意合,心旷神怡。