網站最佳化——IIS與web.config配置最佳化

來源:互聯網
上載者:User

最近工作中需要做一個網站的最佳化工作,總結了幾天,與大家分享下。最佳化思路無非就是前端最佳化,asp.net頁面生命週期最佳化,資料訪問最佳化,IIS與web.config配置最佳化,為了避免篇幅太長,分了四個部分。希望大家能多點評,謝謝!

1.網站最佳化——前端最佳化

2.網站最佳化——asp.net頁面生命週期最佳化

3.網站最佳化——IIS與web.config配置最佳化

4.網站最佳化——資料訪問最佳化

這一篇給大家分享IIS的一些最佳化以及asp.net的web.config配置最佳化。

IIS相關最佳化
1.修改IIS最大背景工作處理序數

a. 請考慮以下幾點:

1.每一個背景工作處理序都會消耗系統資源和CPU佔用率;太多的背景工作處理序會導致系統資源和CPU利用率的急劇消耗;

2.每一個背景工作處理序都具有自己的狀態資料,如果Web應用程式依賴於背景工作處理序儲存狀態資料,那麼可能不支援使用多個背景工作處理序。

3. 成資源競爭,讓多個背景工作處理序運行同一個應用程式會造成資源競爭

b. 修改ISS最大背景工作處理序數提高該應用程式集區處理請求的效能

1.在IIS 6.0的Web園(Web Garden)中,指定用於某個應用程式集區的背景工作處理序的數量就可以提高該應用程式集區處理請求的效能。當伺服器的負載較小,不需要額外的背景工作處理序時,IIS 6.0在一定的時間後(預設20分鐘,可配置)自動縮減實際的背景工作處理序數量;如果負載變大,需要額外的背景工作處理序,IIS 6.0再次增加背景工作處理序數量。這一切操作都自動進行,不需要管理員幹預。

2.修改方法如下:

修改伺服器.net framework的machine.config的配置

目錄:C:\WINDOWS\Microsoft.NET\Framework64\v2.0.50727\CONFIG\machine.config

將其中的“processModel”節點的“allowDefinition”值設定為“Everywhere”

修改伺服器中的iis最大背景工作處理序數:

方法:右擊iis應用程式集區 --> 屬性 -> “效能”選項卡 -> web園 -> 最大背景工作處理序數

註:經測實驗證,伺服器為32(16*2)核32G記憶體時,設定為5效能最優。

(PS: processModel 元素(ASP.NET 設定架構) 元素配置用於伺服器(包括伺服器上的所有 ASP.NET 應用程式)的處理模型。因此,processModel 設定只能放在 Machine.config 檔案中,而且不能被任何 Web.config 檔案中的設定重寫。 )

2.取消IIS的web訪問記錄

a. 關閉IIS訪問記錄可以提升web效能

1.IIS6.0預設開啟對於web的IIS訪問記錄。當開啟記錄功能後,IIS會事無巨細地忠實記錄所有的IIS訪問記錄。這些記錄檔案的內容是非常龐雜的,比如訪問時間、用戶端IP、從哪個連結訪問、 Cookies等,另外還包括 Method(方法), UserAgent(使用者代理程式)等。

這些記錄不但佔用大量的磁碟空間還大大地影響了web伺服器的效能。有人做過評測,停止IIS訪問記錄可以提升5%到8%的web效能。

2.方法:開啟IIS管理器,定位到具體的web網站,右鍵點擊選擇“屬性”,在“主目錄”選項卡下取消對“記錄訪問”的勾選即可

Web.config配置最佳化(生產環境)
1.去除無用HttpModules

d. 並不是所有的Modules都是必需的,去除不用的HttpModules可以提高請求速度

1.asp.net預設的HttpModules管理請求的管線控制每一個請求。

例如:SessionStateModule攔截每一個請求,分析session cookie 來載入HttpContext中的合適的session.但是並不是所有的Modules都是必需的,比如:如果你不用membership的話,就不用配置FormsAuthentication模組;如果你不用windows身分識別驗證就不用配置WindowsAuthentication,這些模組只是包含在管線裡面,為每一個請求執行一些並不是必須的代碼。

2.預設的模組定義在machine.config中(在網站的web.config中設定表示當前網站有效)($WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG)。如果不需要這些管線的話,配置如下:

<httpModules> <!--去除不必要的節點,提高請求速度--> <remove name="OutputCache" /> <remove name="Session" /> <remove name="WindowsAuthentication" /> <remove name="FormsAuthentication" /> <remove name="PassportAuthentication" /> <remove name="RoleManager" /> <remove name="UrlAuthorization" /> <remove name="FileAuthorization" /> <remove name="AnonymousIdentification" /> <remove name="Profile" /> </httpModules>
2. 關閉頁面級無用機制

Web.config中的<pages>節點配置全域定義頁特定設定,如設定檔範圍內的頁和控制項的 ASP.NET 指令。預設enableViewState屬性為“true”,即開啟視圖,如果不使用這個機制就可以設定為“false”。

預設autoEventWireup屬性為“true”,即開啟頁事件,如果不使用這個機制就可以設定為“false”。

預設buffer屬性為“true”,即開啟 HTTP 響應緩衝。
預設enableViewStateMac屬性為“false”,開啟對頁的檢視狀態運行電腦身分識別驗證檢查 (MAC),以放置使用者篡改,如果設定為true,將會引起效能的降低。
預設validateRequest預設為true,開啟驗證使用者輸入中有跨網站指令碼攻擊和SQL注入式漏洞攻擊,,如果出現匹配情況就會發 HttpRequestValidationException 異常。

3. 將CustomError設定為非Off狀態

Web.config中的<customErrors>節點用於定義一些自訂錯誤資訊的資訊。此節點有Mode和defaultRedirect兩個屬性,其中defaultRedirect屬性是一個可選屬性,表示應用程式發生錯誤時重新導向到的預設URL,如果沒有指定該屬性則顯示一般性錯誤。Mode屬性是一個必選屬性,它有三個可能值,它們所代表的意義分別如下:
Mode 說明
On 表示在本地和遠端使用者都會看到自訂錯誤資訊。
Off 禁用自訂錯誤資訊,本地和遠端使用者都會看到詳細的錯誤資訊。
RemoteOnly 表示本機使用者將看到詳細錯誤資訊,而遠端使用者將會看到自訂錯誤資訊。
這裡有必要說明一下本機使用者和遠端使用者的概念。當我們訪問asp.net應用程時所使用的機器和發布asp.net應用程式所使用的機器為同一台機器時成為本機使用者,反之則稱之為遠端使用者。在開發調試階段為了便於尋找錯誤Mode屬性建議設定為Off,而在部署階段應將Mode屬性設定為On或者RemoteOnly,以避免這些詳細的錯誤資訊暴露了程式碼細節從而引來駭客的入侵。

配置如下:

<customErrors mode=" On " defaultRedirect="Error.html"/>
4. 禁用調試

Web.config中的<compilation>節點配置 ASP.NET 使用的所有編譯設定。預設的debug屬性為“true”,即允許調試,在開發階段這樣配置沒有問題。但正式部署上線後,這樣會影響支撐介面的效能,所以在程式編譯完成上線之後應將其設為“false”。

配置如下:

<compilation debug="false" />
5. 串連並發配置

串連並發數限制是指對於同一個ip對同一個domain發起的最大串連數。其實在大多數微軟的產品或組件中都存在這個限制,一般這個數值是2/4個,也就是說在預設情況下,對於同一個ip訪問同一個domain同時最多有2個串連處於建立狀態。預設是2,這個值太低了。這意味著每一個IP最多隻能有兩個請求到你的網站,這樣會造成請求擁堵。asp.net中connectionManagement節點可以設定單個ip對同某個domain發起的最大串連數。

配置如下:

<system.net> <connectionManagement> <add address="*" maxconnection="100" /> </connectionManagement> </system.net>

address代錶針對哪個domain,maxconnection代表最大串連數。

6. 去掉http頭資訊中的ASP.NET 版本標題

enableVersonHeader:指定 ASP.NET 是否應輸出版本標題。使用該屬性來確定當前使用的 ASP.NET 版本。對於生產環境,該屬性不是必需的,可以禁用。

配置樣本:

<httpRuntime enableVersionHeader="false" />

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.