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壓縮率還是不錯的
當然,在瀏覽器的緩衝作用下,並不是每次都需要下載更新所有檔案.