IIS啟用GZIP壓縮之後,原以為可以壓縮所有檔案了,包括html、CSS、JS、圖片這些檔案,但是當我檢查的時候,發現並不是這樣的,壓縮的只有html檔案,而CSS、JS並沒有壓縮。
在卡卡網的網站速度診斷裡的檢測結果:
html網頁已經成功啟用了GZip壓縮
css檔案未成功啟用GZip壓縮
後來研究發現,IIS啟用GZip時預設壓縮的只有html網頁,如果需要壓縮css、js等檔案,還需要另外簡單配置一個檔案。
開啟C:WINDOWSsystem32inetsrvMetaBase.xml這個檔案,然後尋找“IIsCompressionScheme”,會發現有三段,後面那個不用管,只設定前面兩個即可。其中,"/LM/W3SVC/Filters/Compression/gzip"用於設定gzip壓縮,"/LM/W3SVC/Filters/Compression/deflate"用於設定deflate壓縮。
如需壓縮靜態檔案,則將HcDoStaticCompression和HcDoOnDemandCompression設定為“TRUE”,並在HcFileExtensions的屬性中加入需要壓縮的靜態檔案:css、js等;
如需壓縮動態檔案,則將HcDoDynamicCompression設定為“TRUE”,並在HcScriptFileExtensions屬性中加入需要壓縮的動態檔案:aspx、php等。
另外,HcDynamicCompressionLevel屬性和HcOnDemandCompLevel屬性一般都推薦設定為9, 具有最佳性價比。
參考如下各參數設定:
代碼如下 |
複製代碼 |
<IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/deflate" HcCompressionDll="%windir%system32inetsrvgzip.dll" HcCreateFlags="0" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="TRUE" HcDynamicCompressionLevel="9" HcFileExtensions="htm html txt css js xml" HcOnDemandCompLevel="9" HcPriority="1" HcScriptFileExtensions="asp aspx dll exe" > </IIsCompressionScheme> <IIsCompressionScheme Location ="/LM/W3SVC/Filters/Compression/gzip" HcCompressionDll="%windir%system32inetsrvgzip.dll" HcCreateFlags="1" HcDoDynamicCompression="TRUE" HcDoOnDemandCompression="TRUE" HcDoStaticCompression="TRUE" HcDynamicCompressionLevel="9" HcFileExtensions="htm html txt css js xml" HcOnDemandCompLevel="9" HcPriority="1" HcScriptFileExtensions="asp aspx dll exe" > </IIsCompressionScheme> |
設定完畢後,重新啟動IIS,再檢測時發現css、js等檔案已經成功啟用GZip了。