IIS启用GZip压缩JS/CSS等静态文件
采用EXT作为前端框架后,一个缺点就是extjs类库文件比较大,超过1M,在内网应用问题不突出,在外网使用,首次加载要8~20秒,有时网速不好,加载就更慢了,让用户第一体验就不好,为了解决这个问题,我在项目中采用两种方法,一是在前端增加一个加载进度条,二是设置IIS,开启GZIP压缩功能,可以减少传输量一半以上,大大加快加载速度.以下是开启IIS的GZIP方法:
IIS启用Gzip默认只压缩后缀是htm与html的文件,而且对经常用到的js、css无效。
以前没有注意这个问题,在通过在线工具 gtmetrix.com检测时才发现js、css并没用被压缩。
那么如何才能让GZip压缩JS/css呢?这需要做进一步的设置。
1、在Web服务扩展项右键,选择”添加一个新的Web服务扩展”,添加文件,C:\WINDOWS\system32\inetsrv\gzip.dll选中设置扩展状态为允许。
网站mime类型增加 .js application/x-javascript
2、用文本编辑器打开C:\Windows\System32\inetsrv\MetaBase.xml(建议先备份),
找到Location =”/LM/W3SVC/Filters/Compression/gzip用于设置gzip压缩,
找到Location =”/LM/W3SVC/Filters/Compression/deflate”用于设置deflate压缩。
更改后的设置如下:
<IIsCompressionScheme Location=”/LM/W3SVC/Filters/Compression/deflate”
HcCompressionDll=”%windir%\system32\inetsrv\gzip.dll”
HcCreateFlags=”0″
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>
<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>
3、保存文件时,会提示你,当前文件正在使用,不能修改。
4、打开windows服务,找到”IIS Admin Service”,停止服务,会提示有两个服务依赖于该服务,一个是Http
ssl,一个是World Wide Web Publishing Service,别怕,把这两个服务一起停止。
5、保存修改的文件,这里应该能顺利保存。
6、将刚才停止的三个服务Http ssl、World Wide Web Publishing Service、IIS
Admin Service分别启动起来。
7、重新启动IIS。
以下是约2.5M的首页共131个文件 通过国外网站访问测试报告
从报告中看到,实际需时15.54秒(国内访问4~10秒,内网更快2~4秒),实际下载量1.58M压缩率还是不错的
当然,在浏览器的缓存作用下,并不是每次都需要下载更新所有文件.