2011年6月8日 星期三

打開 IIS 7 的壓縮功能

緣由

近來幾乎所有的 Middle Tier 的功能,微軟都是使用 IIS 來作 Host,最有名的就是WCF。如果要建置跨平台的解決方案,使用 xml + Http 幾乎是不二人選,binary 的 protocal 就把它忘了吧。

然而, xml + http 為人最為垢病的地方,就是它實在痴肥。為了讓它減肥,我不得已來 study 如何在 IIS 7 上壓縮網頁的輸出。

如下圖,我呼叫叫了一個 WebService,回傳的是 xml,但大小竟然是 1.5 MB!!這叫我如何能接受?

image

過程

Step1: 安裝Dynamic Content Compression

說實話,我已在 IIS 6 上實作過了。IIS 6 的過程實在不人道,我也不想 POST 到部落格上。而 IIS 7 就簡單許多。

首先,要了解的是 IIS 7  預設就打開了靜態內容的壓縮。不像 IIS 6預設都不壓縮。這大概與 IIS 壓縮的成熟度有關吧。

打開 IIS 7, 點到 Compression 的功能,右方出現一排字「The dynamic content compression module is not installed」,意思就是沒有安裝 dynamic content compression 這一個 module。

imageimage

使用 Programs and Features,執行左方 Menu  的 Turn Windows features on or off,並勾選「Dynamic Content Compression」,按OK建進行安裝。

imageSNAGHTML70f490

安裝完成後,再到 IIS 上執行Compress 的設定。check 一下,果然設定成功了。

image

Step 2: 設定 全機壓縮

只有安裝 dynamic content compression 模組是不夠的。IIS 此時尚不知道要對什麼動態內容作壓縮,接下來設定的就是:「告訴 IIS 什麼樣的內容要作動態壓縮」

在 IIS 上,點選 machine 名稱,執行「Configuration Editor」。

SNAGHTML82361b

選 Section : system.webServer/httpCompression,並調整「dynamicTypes」

image

按右方 Actions Pane 的 Add 連結,並輸入 application/atom+xml

image

記得完成後,要按右上的 Apply 鍵完成設定。

最後,還要重新起動 IIS

SNAGHTML8e7694

結果

再使用Fiddler 測試一下相同的網頁。Oh, My God, 1.5MB的內容壓縮過後只剩 149 KB,壓縮成原來的 10% ,省下的頻寬實在可觀。

image

沒有留言:

Share with Facebook