緣由
近來幾乎所有的 Middle Tier 的功能,微軟都是使用 IIS 來作 Host,最有名的就是WCF。如果要建置跨平台的解決方案,使用 xml + Http 幾乎是不二人選,binary 的 protocal 就把它忘了吧。
然而, xml + http 為人最為垢病的地方,就是它實在痴肥。為了讓它減肥,我不得已來 study 如何在 IIS 7 上壓縮網頁的輸出。
如下圖,我呼叫叫了一個 WebService,回傳的是 xml,但大小竟然是 1.5 MB!!這叫我如何能接受?
過程
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。
使用 Programs and Features,執行左方 Menu 的 Turn Windows features on or off,並勾選「Dynamic Content Compression」,按OK建進行安裝。
安裝完成後,再到 IIS 上執行Compress 的設定。check 一下,果然設定成功了。
Step 2: 設定 全機壓縮
只有安裝 dynamic content compression 模組是不夠的。IIS 此時尚不知道要對什麼動態內容作壓縮,接下來設定的就是:「告訴 IIS 什麼樣的內容要作動態壓縮」
在 IIS 上,點選 machine 名稱,執行「Configuration Editor」。
選 Section : system.webServer/httpCompression,並調整「dynamicTypes」
按右方 Actions Pane 的 Add 連結,並輸入 application/atom+xml
記得完成後,要按右上的 Apply 鍵完成設定。
最後,還要重新起動 IIS
結果
再使用Fiddler 測試一下相同的網頁。Oh, My God, 1.5MB的內容壓縮過後只剩 149 KB,壓縮成原來的 10% ,省下的頻寬實在可觀。
沒有留言:
張貼留言