IIS7.5配置Gzip壓縮解決方案
2016-06-05 08:21:57
18210
GZIP概念
GZIP最早由Jean-loup Gailly和Mark Adler創建,用于UNIX系統的文件壓縮。我們在Linux中經常會用到后綴為.gz的文件,它們就是GZIP格式的。現今已經成為Internet 上使用非常普遍的一種數據壓縮格式,或者說一種文件格式。
HTTP協議上的GZIP編碼是一種用來改進WEB應用程序性能的技術。大流量的WEB站點常常使用GZIP壓縮技術來讓用戶感受更快的速度。這一般是指WWW服務器中安裝的一個功能,當有人來訪問這個服務器中的網站時,服務器中的這個功能就將網頁內容壓縮后傳輸到來訪的電腦瀏覽器中顯示出來,一般對純文本內容可壓縮到原大小的40%,這樣傳輸就快了,效果就是你點擊網址后會很快的顯示出來,當然這也會增加服務器的負載。一般服務器中都安裝有這個功能模塊的。
IIS7.5配置Gzip壓縮解決方案
開啟配置HTTP壓縮(GZip)
在IIS7中配置Gzip壓縮相比IIS6來說實在容易了許多,而且默認情況下就是啟用GZip壓縮的。如果沒有,則可以在功?視圖下找到“壓縮”項,進入之后就會看到“靜態內容壓縮”和“動態內容壓縮”兩個選項,勾上即可。


配置啟用壓縮的文件類型及其他選項
當開啟 GZip壓縮之后,IIS并不是對所有內容都啟用了壓縮,而是有選擇的進行壓縮。遺憾的是,我們無法直接在IIS7管理器中配置這些壓縮選項。我們首先需要在C:/Windows/System32/inetsrv/config文件夾下找到applicationhost.config文件,打開之后找到如下一節內容:
<httpCompression directory="%SystemDrive%/inetpub/temp/IIS Temporary Compressed Files">
<scheme name="gzip" dll="%Windir%/system32/inetsrv/gzip.dll" />
<dynamicTypes>

</dynamicTypes>
<staticTypes>

</staticTypes>
</httpCompression>
我們可以看到,IIS實際上是根據MIME類型來決定是否啟用HTTP壓縮的,以?壓縮比之類的選項。可以看出,圖片默認情況下是不被壓縮的,這是因為圖片的壓縮比太低了。
我們注意到,對于Javascript來說,上面對不同的mime類型配置了不同的壓縮方式。 Javascript有三種常見的Mime類型,text/javascript,application/x- javascript,application/javascript。這三種類型都是合法的,在現代瀏覽器中也不存在什么差別。但是由于IIS7中Js文件的mime類型默認被設置為application/x-javascript,也就是說對于js文件,使用的是動態內容壓縮而不是靜態內容壓縮,因此會導致js文件有時經過壓縮的,有時卻沒有壓縮。

由于js文件通常穩定之后不會再被修改了,因此建議改成靜態壓縮——即把 dynamicTypes這一節中的application/x-javascript挪到靜態壓縮節中。這樣保證每次腳本都是被壓縮過返回的。
靜態壓縮及動態壓縮的區別
IIS7中的HTTP壓縮分為“靜態內容壓縮”和“動態內容壓縮”,其實這兩個名字第一次接觸很費解。什么是動態內容什么又是靜態內容?實際上,準確的翻譯應該是“靜態壓縮”和“動態壓縮”。這兩個詞反應了IIS的壓縮行為。對于配置在 staticTypes節中的mime類型,將會啟用靜態壓縮,也就是說,當文件第一次被請求的時候,IIS會將其壓縮,然后放入臨時文件夾中,下次再有人請求此文件時直接從臨時文件夾中取出壓縮后的版本而不用重新執行壓縮的過程。配置在dynamicTypes一節中的mime類型的http請求都將啟用動態壓縮,即每一次請求,主機都會對請求的內容——可能是存放在文件系統中的靜態文件,也可能是ISAPI返回的內容——進行壓縮,而不會對其進行緩存。這個壓縮比率因主機性能不同而會有所調整,所以我們在請求js文件的時候才會發現js文件有時壓縮有時不壓縮的情況。
顯而易見,靜態壓縮會占用一定的存儲空間,但是速度快,而動態壓縮不占用存儲空間,但是占用CPU時間,而且壓縮比不恒定。而對于經過ISAPI的請求,則不能使用靜態壓縮方式。例如對于WCF返回的內容。
最后我們可以用站長工具測試一下是否開啟 。。。