ASP.NET效能最佳化(一)壓縮你的網頁

來源:互聯網
上載者:User

幾年前寫的一個系列,現重新發佈於此。

一、HTTP壓縮概述
    HTTP壓縮主要是通過一種叫做GZip的壓縮方式(壓縮率通常在30%-50%)將使用者請求的檔案壓縮後再返回給使用者,使用者接收到壓縮後的檔案後在瀏覽器中解壓還原。目前IIS中內建的有這種壓縮方式,大多數瀏覽器(如IE,Firefox)中包含解壓程式,所以實現起來非常簡單。

二、HTTP壓縮的工作原理
    Web伺服器接收到瀏覽器的HTTP請求後,檢查瀏覽器是否支援HTTP壓縮; 
    如果瀏覽器支援HTTP壓縮,Web伺服器檢查請求檔案的尾碼名; 
    如果請求檔案是HTML、CSS等靜態檔案,Web伺服器到壓縮緩衝目錄中檢查是否已經存在請求檔案的最新壓縮檔; 
    如果請求檔案的壓縮檔不存在,Web伺服器向瀏覽器返回未壓縮的請求檔案,並在壓縮緩衝目錄中存放請求檔案的壓縮檔; 
    如果請求檔案的最新壓縮檔已經存在,則直接返回請求檔案的壓縮檔; 
    如果請求檔案是ASPX等動態檔案,Web伺服器動態壓縮內容並返回瀏覽器,壓縮內容不存放到壓縮緩衝目錄中。

 

三、在IIS6.0中配置Http壓縮
    開啟Internet資訊服務(IIS)管理器,右擊"網站"->"屬性",選擇"服務"。選中"壓縮應用程式檔案"和"壓縮靜態檔案",按需要設定"臨時目錄"和"臨時目錄的最大限制";  

   在Internet資訊服務(IIS)管理器,在"Web服務擴充"中增加一個新的Web服務擴充,其中"要求的檔案"為"C:\WINDOWS\system32\inetsrv\gzip.dll";
   

 修改"C:\Windows\System32\inetsrv\MetaBase.xml"(這是IIS的核心設定檔,如果損壞將導致IIS無法工作,建議先備份)。找到Location ="/LM/W3SVC/Filters/Compression/gzip",如果需要壓縮動態檔案,則將HcDoDynamicCompression設定為"TRUE",並在HcScriptFileExtensions中增加您要壓縮的動態檔案尾碼名,如aspx;如果需要壓縮靜態檔案,則將HcDoStaticCompression和HcDoOnDemandCompression設定為"TRUE",並在HcFileExtensions中增加您需要壓縮的靜態檔案尾碼名,如xml、css等;HcDynamicCompressionLevel和HcOnDemandCompLevel表示需要的壓縮率,數字越小壓縮率越低,消耗的CPU記憶體資源也越少。網上有人推薦設定為9取得最好的平衡,但我沒有測試過; 

<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
css
js
xml
HcOnDemandCompLevel="9"
HcPriority="1"
HcScriptFileExtensions="asp
dll
exe
aspx"

    編輯完畢後儲存MetaBase.xml檔案;如果檔案無法儲存,則可能IIS正在使用該檔案。開啟"開始"->"管理工具"->"服務",停止"IIS Admin Service"後,即可儲存,儲存後再啟動此服務;
    最後重新啟動IIS;

 

四、測試壓縮效果

我們可以看到檔案被壓縮了50%,效果還是相當明顯的。

五、總結
    目前,很多大型的網站都啟用了HTTP壓縮功能,如MSDN、CNBlog等。當然,啟用壓縮功能會增加Web伺服器CPU、記憶體的負擔(壓縮是要消耗資源的),但從成本角度考慮增加一個CPU比增加10M的頻寬要便宜得多,所以對於Web應用的意義是非常巨大的。

 

參考文檔:

http://doc.51windows.net/iismmc/?url=/iismmc/htm/qos_utilbandwdth.htm

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.