| 关键词: IIS 服务器 nbsp adminscripts compression 文件 浏览器 cscript filters adsutil |
IIS压缩并不是一项新技术,但对于站点而言,IIS压缩能起到很大的作用。在IIS服务器上启用IIS压缩功能之后,在IIS服务器把页面内容发送给浏览器之前,会在服务器上先把内容进行压缩,然后发送压缩后的数据,浏览器接收到数据后,会自动进行解压,然后显示。由于在网络上传输的数据被压缩了,所以可以将页面内容更快的传送到浏览器,提高页面浏览速度。 虽然IIS服务器上对页面内容进行压缩会耗费一定的CPU时间,但这对于现在主流服务器CPU而言,已经不会造成什么问题。而且这点CPU时间与节省的数据传输时间相比,实在是太划算了。每次压缩过一个静态内容页面之后,IIS会将压缩后的文件缓存到磁盘上,这样可以避免下次再重复压缩,所以不会对 CPU 有太大的负担。如果你发现它并没有带来想象中的服务器性能提升,要禁用它也非常简单。它没有改变过你的站点内容,改变的仅是数据传输的方式而已。 在IIS服务器上启用IIS压缩虽然可以通过图形界面的IIS管理器完成,但有些配置仅仅通过IIS管理器是做不了的,所以,我们使用IIS的一个脚本工具来进行所有的管理和配置。 打开IIS管理界面,在"网站"标签上点右键->属性。 "服务"标签下的"HTTP 压缩": 根据需求选中 "压缩应用程序文件" 或者 "压缩静态文件"。 临时目录对应的文件夹,通常是"C:\WINDOWS\IIS Temporary Compressed Files",需要给 IUSR_机器名 写的权限。 下面的指令需要在服务器上的命令提示符中执行。 在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 在静态文件压缩中添加".js”,".css”文件类型,要执行两条指令: cscript C:\Inetpub\adminscripts\adsutil.vbs SET W3Svc/Filters/Compression/DEFLATE/HcFileExtensions "htm" "html" "txt" "js" "css" cscript C:\Inetpub\adminscripts\adsutil.vbs SET W3Svc/Filters/Compression/GZIP/HcFileExtensions "htm" "html" "txt" "js" "css" 在动态文件压缩中添加".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" 最后,执行"iisreset",重起IIS 除此之外还可以通过修改iis配置数据库以达到目的: 在IIS管理界面,"计算机名" 标签上点右键->属性。 选择 "允许直接编辑配置数据库" 打开 "C:\WINDOWS\system32\inetsrv\MetaBase.xml", 在 <IIsCompressionScheme Location="/LM/W3SVC/Filters/Compression/deflate">节和<IIsCompressionScheme Location="/LM/W3SVC/Filters/Compression/gzip">节, 修改HcDynamicCompressionLevel为9。(性能/压缩比最好) 修改HcFileExtensions为"htm html txt js css" (可扩展,带引号) 修改HcScriptFileExtensions为"asp exe dll aspx" (可扩展,带引号) 保存文件。 关闭 "允许直接编辑配置数据库"选项。 启用IIS压缩后,到底能为我们节省多少数据传输呢?我们可以简单的测试一下。我们使用Microsoft Fiddle,这个好用且强大的工具。它原理上是一个代理,能让浏览器通过它去获取HTTP内容,它则自动记录浏览器的访问历史数据。Fiddle可以在http://www.fiddlertool.com/fiddler/version.asp下载。 首先,关闭IIS压缩,清空浏览器缓存,然后在IE中访问默认站点首页,在Fiddle中记录下的访问历史数据如下: Request Count: 29 Bytes Sent: 11,089 Bytes Received: 676,934 这些信息表示,浏览器一共请求了29项资源,服务器一共向浏览器发送了676K数据。676K!这仅仅是默认的站点首页哦! 然后打开IIS压缩功能,再清空浏览器缓存,再次访问一下首页,Fiddle中记录的信息如下: Request Count: 29 Bytes Sent: 11,089 Bytes Received: 230,276 可以看到,仅仅通过简单的启用IIS压缩功能,默认首页所请求的数据大小就从676K减少到了230K。 ps:此文乃网上转载并整理,发现如下问题 如果清空客户端的IE缓存后再次访问没有效果,可以通过应用程序池回收资源 将HcScriptFileExtensions的参数设置为空字符串会降低服务器性能。(所有的动态响应都以压缩方式发送) 相关的HTTP压缩软件: Port80 Software ZipEnable ZipEnable 是少数微软特别推荐的产品之一,而且它与IIS 6兼容,通过配置IIS 6的设置,它可以将IIS6的HTTP压缩功能进一步在目录级别上进行进行控制 测试是否启用gzip:www.port80software.com/tools/compresscheck |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|