IIS 6.0中启用HTTP Gzip压缩

    一直以来都把IIS服务器中的GZIP开启,这样可以明显加快数据传输速度。这几天新上了一台服务器,折腾了半天也没有搞好了GZIP的开启。查了很久,步骤很简单却不成功。最终发现关键是{如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为 "TRUE"}

    下面收藏设置方法:

    在 IIS 管理器中,展开本地计算机,右键单击“网站”文件夹,然后单击“属性”。
    单击“服务”选项卡,然后在“HTTP 压缩”部分,选中“压缩应用程序文件”复选框以压缩应用程序文件。
    选中“压缩静态文件”复选框可以只压缩要传送给启用压缩的客户端的静态文件。
    在“临时目录”框中,输入某个本地目录的路径,或者单击“浏览”来查找目录。压缩文件保存在这个临时目录中。该目录必须在 NTFS 分区的本地驱动器上。该目录不能是压缩目录,而且不能被共享。
    在“临时目录的最大容量”下面,单击某个文件夹大小选项。如果单击“限制为(兆字节)”选项,并在它旁边的文本框中输入数值,IIS 会在达到设置的限制时根据“最近最少使用”原则自动清理临时目录。
    单击“应用”,然后单击“确定”。

    1) 打开Internet信息服务(IIS)管理器,右击"网站"->"属性",选择"服务"。在"HTTP压缩"框中选中"压缩应用程序文件"和"压缩静态文件",按需要设置"临时目录"和"临时目录的最大限制";

    2) 在Internet信息服务(IIS)管理器,右击"Web服务扩展"->"增加一个新的Web服务扩展...",在"新建Web服务扩展"框中输入扩展名"HTTPCompression",添加"要求的文件"为C:\WINDOWS\system32\inetsrv\gzip.dll,其中 Windows系统目录根据您的安装可能有所不同,选中"设置扩展状态为允许";
    下面的这一步很重要。请认真看。
    3) 使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),找到Location ="/LM/W3SVC/Filters/Compression/gzip",如果需要压缩动态文件,则将 HcDoDynamicCompression设置为"TRUE",并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为 "TRUE",并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml css等; HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数字越小压缩率越低;

    4) 编辑完毕后保存MetaBase.xml文件;如果文件无法保存,则可能IIS正在使用该文件。打开"开始"->"管理工具"->"服务",停止"IIS Admin Service"后,即可保存;或者命令行下:net stop iisadmin.启动用net start w3svc.

    5) 最后,重新启动IIS。可以到HTTP压缩测试网站:这里
    验证结果。注意验证的时候,验证三次:一次只输入域名。一次输入你的静态文件名,一次输入你的动态文件名。三次都显示为:Compression status: Compressed (gzip),即为成功。
    可是我在配置了HTTP 压缩之后发现,当URL地址中不包含文件名时,压缩就会失效,比如访问https://tsov.net,就没有进行压缩,而且访问https://tsov.net/index.php, 压缩就生效。IIS 6中的HTTP压缩是根据MetaBase.xml中的HcScriptFileExtensions定义的扩展名进行匹配的,IIS 6在检查匹配时,对于不含文件名的URL, 没有先加上默认文档名进行匹配,所以引起了这个问题。我采用的解决方法是将HcScriptFileExtensions的值设为空,对任何文件进行压缩。

相关文章
关闭 Apache 的web日志记录IIS7中添加其它扩展名的映射在IIS中删除ETag的方法让godaddy的windows空间支持gzip压缩ASP.NET的IIS映射iis 未知验证服务的解决方案win2003下ntfs与IIS的权限问题
    标签:iisgzip 发布于:2009-09-22 20:38:12

当前共有0条评论,我也要发表:

    我的名字:

    我的邮箱: