Web服务器内容的压缩输出
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/299)的形式标明文章原始出处和作者信息及本声明。还在使用工具压缩js和css文件么?已经有些落伍啦,其实web服务器本身就具备压缩功能,可以把客户端所需要的内容压缩后再传输。当然这需要客户端浏览器支持压缩(通常是gzip方式),不过现在的主流浏览器比如ie、firefox、opera、safari都是支持滴。
首先可以用Real-Time Compression Check检查一下你现有的网站是否启用了压缩输出,如果没有,而且你使用的是iis系列web服务器的话,可以购买商业软件比如ZipEnable来实现;如果使用的是apache服务器,那你有福了,使用mod_deflate就可以了。
mod_deflate的前身是mod_gunzip和mod_gzip,他们大多用于Apache 1.3分支,现在的Apache 2.x系列中,就被mod_deflate替代了,并且功能更加丰富。mod_gunzip和mod_gzip的区别在于:
mod_gunzip需要服务器上的文件本身就是压缩存储的,如果浏览器不支持压缩的话,再由web服务器解压后传输给客户端,否则直接读取压缩文件传给客户端。这样作的好处就是不占用cpu,并且大多数浏览器支持压缩,需要web服务器解压的不大。不过,碰到不支持压缩的机器人的话可就不好半喽。另外现在网站的内容大多是由程序动态生成的,在这种情况下mod_gunzip就没有用武之地了。
mod_gzip则不需要文件预先压缩存储,而是在浏览器支持压缩的情况下,把数据压缩之后再传给客户端。这样会牺牲一些cpu代价,但是适用于网站内容由程序动态生成的情况,并且gzip的速度也是非常得快,每次web请求的数据量也都不大,所以实际的cpu占用并不会太多。并且如果文件本身就是压缩了的,比如index.html.gz,那么这些文件会被直接输出,不用再压缩了(这样并不代表有了index.html.gz,就能替代index.html作为目录索引页)。所以mod_gzip实际上覆盖和超越了mod_gunzip的功能。
mod_deflate的启用在ubuntu中很简单,“a2enmod deflate”就可以了,其他系统可以在httpd.conf中添加:
mod_deflate还需要配置一下,比如在httpd.conf中:
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-php application/x-javascript text/css
</ifmodule>
指定对html、txt、xml、php、js、css等mime类型的文件进行压缩,application/x-httpd-php和application/x-javascript是我加上的,不知道能否起作用。也可以按照文件扩展名或者浏览器类型进行压缩,还有更复杂的配置,可以查询官方的手册。
参考:
Compressed delivery
*.gz files shouldn’t get “Content-Encoding: gzip” header
How To Save Traffic With Apache2’s mod_deflate
Apache Module mod_deflate
Update @ 2008-03-31
今天在apache 2.2.4下看到还需要增加以下辅助配置:
AddEncoding x-gzip .gz
AddType text/html .gz
主要是让apache能够正确设置和处理.gz文件,至于MultiViews选项我看设不设没什么影响,参考:The nGzip File Compressor
Tags: Apache, deflate, gzip
Save to Browser Favorites
Ask
backflip
blinklist
BlogBookmark
Bloglines
BlogMarks
Blogsvine
BUMPzee!
CiteULike
co.mments
Connotea
del.icio.us
DotNetKicks
Digg
diigo
dropjack.com
dzone
Facebook
Fark
Faves
Feed Me Links
Friendsite
folkd.com
Furl
Google
Hugg
Jeqq
Kaboodle
linkaGoGo
LinksMarker
Ma.gnolia
Mister Wong
Mixx
MySpace
MyWeb
Netvouz
Newsvine
PlugIM
popcurrent
Propeller
Reddit
Rojo
Segnalo
Shoutwire
Simpy
sk*rt
Slashdot
Sphere
Sphinn
Spurl.net
Squidoo
StumbleUpon
Technorati
ThisNext
Webride
Windows Live
Yahoo!
Email This to a Friend
If you like this then please subscribe to the
March 15th, 2007 at 12:16:04
请教一下,如果平常的“用工具”压缩Js和CSS是不是修改其中的代码呢?
而这里的mod_gzip/mod_gunzip大概就是和winrar类似的效果吧?
请教中…
lwjct@hotmail.com
[Reply]
March 15th, 2007 at 13:07:47
回楼上,这里我说的一些css和js压缩工具
多半是使用去除css和js文件当中的空格、TAB等方式来压缩的
即对机器阅读来讲没有改变,只是把方便人阅读的无用字符去掉了
关于第二个winrar的问题,我想问你如果把一个html文件压缩成.rar文件放在web目录下
用户访问的时候会怎样呢?
而如果启用了mod_gzip或者mod_deflate之后,用户访问会看到被自动解开的html原文
而解压工作是由用户的浏览器来作的。
[Reply]
March 15th, 2007 at 13:29:18
能告诉wordpress的.htaccess怎么写吗?谢谢了!
[Reply]
March 16th, 2007 at 0:46:54
To: 清风
我一直使用从1.0延续下来的旧方法,自己写了个.htaccess,你可以参考我以前写的文章:
http://www.fwolf.com/blog/post/87
不过现在wp自带的permlink好像也很好用了
似乎还有相关的插件呢
还可以参考一下这里:
http://www.chedong.com/blog/archives/001079.html
不过也是比较旧的了
[Reply]