现代的浏览器IE6和Firefox都支持客户端Gzip,也就是说,在服务器上的网页,传输之前,先使用Gzip压缩再传输给客户端,客户端接收之后由浏览器解压显示,这样虽然稍微占用了一些服务器和客户端的CPU,但是换来的是更高的带宽利用率。
在IIS7中配置Gzip压缩相比IIS6容易了许多,而且默认情况下就是启用GZip压缩的。在功能视图下找到“压缩”项,打开之后就会看到“静态内容压缩”和“动态内容压缩”两个选项,勾上即可。
这样子就算是开启成功了,但是这还不是算真正的成功,因为还没达到我们的期望。(这里有篇检测是否启用的 GZIP的文章)
当开启GZip压缩之后,IIS并不是对所有内容都启用了压缩,而是有选择的进行压缩。经过检测就发现没有启用到GZIP,出现了IIS7的js文件,虽然启用Gzip后却不压缩”的这种情况,因为微软的IIS7管理器中无法配置这些压缩选项,需要我们在C:\Windows\System32\inetsrv\config文件夹下找到applicationhost.config的配置文件进行修改。下面贴出本人的配置,可以直接复制使用。替换掉原来的即可,注意操作配置文件之前备份一下,防止误操作回不来!这里可以直接查找“gzip”定位到:
<httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files"> <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" /> <dynamicTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="*/*" enabled="false" /> </dynamicTypes> <staticTypes> <add mimeType="text/*" enabled="true" /> <add mimeType="message/*" enabled="true" /> <add mimeType="application/octet-stream" enabled="true" /> <add mimeType="application/x-javascript" enabled="true" /> <add mimeType="application/javascript" enabled="true" /> <add mimeType="application/atom+xml" enabled="true" /> <add mimeType="application/xaml+xml" enabled="true" /> <add mimeType="*/*" enabled="false" /> </staticTypes> </httpCompression>
IIS实际上是通过MIME类型来决定是否启用HTTP压缩的,以及压缩比之类的选项。由于图片的压缩比太低,图片默认是不被压缩的。
具体的静态压缩及动态压缩的区别,可以参考这篇文章