IIS压缩并不是一项新技术,但对于SharePoint站点而言,IIS压缩能起到很大的作用。在IIS服务器上启用IIS压缩功能之后,在IIS服务 器把页面内容发送给浏览器之前,会在服务器上先把内容进行压缩,然后发送压缩后的数据,浏览器接收到数据后,会自动进行解压,然后显示。由于在网络上传输 的数据被压缩了,所以可以将页面内容更快的传送到浏览器,提高页面浏览速度。
虽然IIS服务器上对页面内容进行压缩会耗费一定的 CPU时间,但这对于现在主流服务器CPU而言,已经不会造成什么问题。而且这点CPU时间与节省的数据传输时间相比,实在是太划算了。每次压缩过一个页 面之后,IIS会将压缩后的文件缓存到磁盘上,这样可以避免下次再重复压缩。
在IIS服务器上启用IIS压缩虽然可以通过图形界面的IIS管理器完成,但有些配置仅仅通过IIS管理器是做不了的,所以,我们使用IIS的一个脚本工具来进行所有的管理和配置。下面的指令需要在服务器上的命令提示符中执行。
在IIS服务器上启用静态文件(.js、.css、.html之类)压缩:
cscript C:\Inetpub\adminscripts\adsutil.vbs set w3svc/filters/compression/parameters/HcDoStaticCompression true
在IIS服务器上启用动态文件(.asp之类)压缩:
cscript C:\Inetpub\adminscripts\adsutil.vbs set w3svc/filters/compression/parameters/HcDoDynamicCompression true
在动态文件压缩中添加“.aspx”文件类型(SharePoint站点所有页面都是.aspx的),要执行两条指令:
cscript C:\Inetpub\adminscripts\adsutil.vbs SET W3SVC/Filters/Compression/Deflate/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
cscript C:\Inetpub\adminscripts\adsutil.vbs SET W3SVC/Filters/Compression/gzip/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
将默认的压缩率提高,也是两条指令:
cscript C:\Inetpub\adminscripts\adsutil.vbs SET W3Svc/Filters/Compression/GZIP/HcDynamicCompressionLevel "9"
cscript C:\Inetpub\adminscripts\adsutil.vbs SET W3Svc/Filters/Compression/DEFLATE/HcDynamicCompressionLevel "9"
启用IIS压缩后,到底能为我们节省多少数据传输呢?我们可以简单的测试一下。我们使用Microsoft Fiddle,这个好用且强大的工具。它原理上是一个代理,能让浏览器通过它去获取HTTP内容,它则自动记录浏览器的访问历史数据。Fiddle可以在 http://www.fiddlertool.com/fiddler/version.asp下载。
首先,关闭IIS压缩,清空浏览器缓存,然后在IE中访问MOSS 2007的默认站点首页,在Fiddle中记录下的访问历史数据如下:
Request Count: 29
Bytes Sent: 11,089
Bytes Received: 676,934
这些信息表示,浏览器一共请求了29项资源,服务器一共向浏览器发送了676K数据。676K!这仅仅是默认的MOSS 2007站点首页哦!
然后打开IIS压缩功能,再清空浏览器缓存,再次访问一下首页,Fiddle中记录的信息如下:
Request Count: 29
Bytes Sent: 11,089
Bytes Received: 230,276
可以看到,仅仅通过简单的启用IIS压缩功能,MOSS 2007的默认首页所请求的数据大小就从676K减少到了230K。