启用对静态内容的 HTTP 压缩
您可以通过以下方法执行此过程:使用用户界面 (UI)、在命令行窗口中运行 Appcmd.exe 命令、直接编辑配置文件或编写 WMI 脚本。
用户界面
使用 UI
打开 IIS 管理器,然后导航至您要管理的级别。 有关如何打开 IIS 管理器的信息,请参阅 打开 IIS 管理器 (IIS 7)。 有关如何在 UI 的各个位置间进行导航的信息,请参阅 在 IIS 管理器中导航 (IIS 7)。
在“功能视图”中,双击“压缩”。
在“压缩”页上,选中“启用静态内容压缩”旁边的框。
在“操作”窗格中,单击“应用”。
命令行
若要启用对静态内容的 HTTP 压缩,请在命令提示符处键入如下命令,然后按 Enter:
appcmd set config /section:urlCompression /doStaticCompression:True
有关 Appcmd.exe 的详细信息,请参阅 Appcmd.exe (IIS 7) 。
配置
本主题中的过程会影响以下配置元素:
<urlCompression>
有关 IIS 7 配置的详细信息,请参阅 MSDN 上的 IIS 7.0:IIS 设置架构(可能为英文页面)。
WMI
请使用以下 WMI 类、方法或属性执行此过程:
HttpCompressionSection.Schemes.DoStaticCompression 属性
HttpCompressionSchemeElement 类
有关 WMI 和 IIS 的详细信息,请参阅 IIS 7 中的 Windows Management Instrumentation (WMI)。 有关与此过程关联的类、方法或属性的更多信息,请参阅 MSDN 网站上的 IIS WMI 提供程序参考(可能为英文页面)。
注:默认情况下只会在你网站根目录有效果,如果想让 js,css 文件夹里使用GZIP,那么则需要在站点里相应的目录下执行以上操作
讲一下如果配置了,可以在
http://tool.chinaz.com/Gzips/
测试,当然可以具体到css和js 例如(..com/js/js.js).
当然有可能这样配置后无效,解决方法如下:
先打开IIS管理,选择我要设置的站点,然后在右边的功能区找到MIME TYPES看看里面是否有.JS的选项,如果没有可以手功加上
有的话把.js的值设置成:application/x-javascript记住不能少并x-有的网友介绍是application/javascript
偶在WIN2008+IIS7下试过,如果不加x-也是不会压缩的。
当然最好在上传JS前对JS进行一次压缩这样效果会更好啦。 可以到网上找找TBCompressor工具,这个工具压缩不错
先打开IIS管理,选择我要设置的站点,然后在右边的功能区找到MIME TYPES看看里面是否有.JS的选项,如果没有可以手功加上
有的话把.js的值设置成:application/x-javascript记住不能少并x-有的网友介绍是application/javascript
偶在WIN2008+IIS7下试过,如果不加x-也是不会压缩的。
当然最好在上传JS前对JS进行一次压缩这样效果会更好啦。 可以到网上找找TBCompressor工具,这个工具压缩不错
IIS7下js文件启用Gzip后却不压缩的解决方法
IIS7已经启用静态文件压缩(Gzip)但是死活不压缩,查找后发现是II7下MIME类型设置问题
将.js的MIME类型设置为application/javascript
再查看页面,已经启用了Gzip。
不过,几个天后又发现有的js文件被压缩,有的却没有。
查找原因发现是引用js文件是没有设置type
<script></script>
<script src=”A.js”></script>
加上type="text/javascript"类型后问题解决。
偶尔失效(一会有效一会无效)的解决方法
3. 使用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
找到Location =“/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location =”/LM/W3SVC/Filters/Compression/deflate“用于设置deflate压缩。 上面两个节点紧挨着。并且设置的属性相同。
如果需要压缩动态文件,则将HcDoDynamicCompression设置为”TRUE“,
并在HcScriptFileExtensions中增加您要压缩的动态文件后缀名,如aspx;
如果需要压缩静态文件,则将HcDoStaticCompression和HcDoOnDemandCompression设置为”TRUE“,
并在HcFileExtensions中增加您需要压缩的静态文件后缀名,如xml、css等;
HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的压缩率,数值在0-10, 默认为0。
HcDynamicCompressionLevel属性说明:HcDynamicCompressionLevel Metabase Property
HcOnDemandCompLevel 属性说明:HcOnDemandCompLevel Metabase Property
说明: 这两个属性值一般推荐设置为9, 具有最佳性价比。
<IIsCompressionScheme Location="/LM/W3SVC/Filters/Compression/gzip"
HcCompressionDll = "%windir%\system32\inetsrv\gzip.dll"
HcCreateFlags="1"
HcDoDynamicCompression="TRUE"
HcDoOnDemandCompression="TRUE"
HcDoStaticCompression="true"
HcDynamicCompressionLevel="9"
HcFileExtensions="htm
html
txt
js
css
swf
xml"
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp
aspx
dll
exe">
</IIsCompressionScheme>
注意
1. 在编辑MetaBase.xml前需要停止IIS,可以使用 net stop iisadmin
2. 修改完成后开启iisadmin服务,并执行iisreset命令
关于SEO的测试
压缩是否对SEO有影响,经测试,开启后仍然可以被很好的收录。
关于对SEO影响的研究文章,还可以参考下面的几篇文章。
具体的效率问题,将继续监控以作研究。
如果以上设置无效,或者MetaBase.xml没有响应节点,用以下方式解决
第一种是在web.config中添加以下内容,将frequentHitThreshold调至1,将frequentHitTimePeriod调制10分钟
<system.webServer>
<serverRuntime enabled="true"
frequentHitThreshold="1"
frequentHitTimePeriod="00:10:00"/>
</system.webServer>
第二种方法是打开%windir%\system32\inetsrv\appcmd.exe,然后再命令行界面中输入以下命令字符串,然后回车
set config -section:system.webServer/serverRuntime -frequentHitThreshold:1
如果 appcmd.exe 窗口执行无法停留,可以执行连续指令:
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/serverRuntime -frequentHitThreshold:1
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/serverRuntime -frequentHitTimePeriod: 00:10:00