IIS压缩及性能优化

发布时间:2019-10-04编辑:脚本学堂
IIS压缩及性能优化

对于SharePoint站点而言,IIS压缩能起到很大的作用。在IIS服务器上启用IIS压缩功能之后,在IIS服务器把页面内容发送给浏览器之前,会在服务器上先把内容进行压缩,然后发送压缩后的数据,浏览器接收到数据后,会自动进行解压,然后显示。由于在网络上传输的数据被压缩了,所以可以将页面内容更快的传送到浏览器,提高页面浏览速度。

虽然IIS服务器上对页面内容进行压缩会耗费一定的CPU时间,但这对于现在主流服务器CPU而言,已经不会造成什么问题。而且这点CPU时间与节省的数据传输时间相比,实在是太划算了。每次压缩过一个页面之后,IIS会将压缩后的文件缓存到磁盘上,这样可以避免下次再重复压缩。

在IIS服务器上启用IIS压缩虽然可以通过图形界面的IIS管理器完成,但有些配置仅仅通过IIS管理器是做不了的,所以,我们使用IIS的一个脚本工具来进行所有的管理和配置。下面的指令需要在服务器上的命令提示符中执行。

在IIS服务器上启用静态文件(.js、.css、.html之类)压缩:
cscript C:Inetpubadminscriptsadsutil.vbs set w3svc/filters/compression/parameters/HcDoStaticCompression true
在IIS服务器上启用动态文件(.asp之类)压缩:
cscript C:Inetpubadminscriptsadsutil.vbs set w3svc/filters/compression/parameters/HcDoDynamicCompression true

在动态文件压缩中添加“.aspx”文件类型(SharePoint站点所有页面都是.aspx的),要执行两条指令:
cscript C:Inetpubadminscriptsadsutil.vbs SET W3SVC/Filters/Compression/Deflate/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
cscript C:Inetpubadminscriptsadsutil.vbs SET W3SVC/Filters/Compression/gzip/HcScriptFileExtensions "asp" "dll" "exe" "aspx"

将默认的压缩率提高,也是两条指令:
cscript  C:Inetpubadminscriptsadsutil.vbs SET W3Svc/Filters/Compression/GZIP/HcDynamicCompressionLevel "9"
cscript C:Inetpubadminscriptsadsutil.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。

效果测试
开启压缩前:
Request Count:  55
Bytes Sent:  30,254
Bytes Received: 550,563

开启压缩后:

Request Count:  55
Bytes Sent:  30,003
Bytes Received: 307,545

550K和307K 差别好大。

HTTP 压缩的好处:

静态网页采用HTTP 压缩,大约可以减少20%的传输量。
用户端使用IE 5.0浏览器连线到已经启用HTTP压缩IIS 5.0之Web伺服器,才有HTTP压缩功能。如今,绝大多数的现代浏览器支持压缩技术,但是,具体的压缩方式取决于浏览器。

不过你无需对此担心,因为只有浏览器指示支持一种压缩方式时,Web服务器才会发送压缩内容。尽管如此,了解一下这种处理机制和不同浏览器支持的压缩类型也是一件有意义的事。

浏览器在要求一个网址时,会把支持的压缩格式通过Accept-Encoding的HTTP头提交给服务器,IIS或其它Web服务器则从HTTP_ACCEPT_ENCODING环境变量读取这个信息,这个过程无需你人为干预,IIS在浏览器支持压缩的情况下会自动对发送的内容进行合适的编码。
下表列出了常见的浏览器和它们支持的编码类型:
浏览器  支持的编码
Firefox 1.0, Mozilla 1.x, Camino  gzip, deflate
OmniWeb 5.x  bzip2, gzip, deflate
Safari  gzip, deflate
Internet Explorer  gzip, deflate