如何提高ASP.NET性能
如果您在ASP.NET中編寫的代碼,那么你需要通過以下幾點(diǎn),以確保良好的性能:
◆ 你是否使用緩存嗎?
◆ 你是否使用會話狀態(tài)?
◆ 你使用的應(yīng)用程序狀態(tài)嗎?
◆ 你使用線程和同步功能?
◆ 你資源的有效管理呢?
◆ 你有效地管理字符串?
◆ 你有效地管理例外?
◆ 有你優(yōu)化你的網(wǎng)頁?
◆ 你使用視圖狀態(tài)?
◆ 你使用服務(wù)器控件嗎?
◆ 你從你的頁面訪問數(shù)據(jù)嗎?
◆ 你可以使用數(shù)據(jù)綁定嗎?
◆ 你從ASPX頁面調(diào)用非托管代碼?
◆ 你有沒有審查Machine.config中的設(shè)置嗎?
您使用緩存嗎?
使用下面的復(fù)習(xí)題,以評估您的代碼使用ASP.NET緩存功能:
◆ 你有太多的變化輸出緩存嗎?
檢查您的網(wǎng)頁,使用輸出緩存,以確保數(shù)量變化有限制。輸出緩存頁面太多的變化可以導(dǎo)致內(nèi)存使用量的增加。您可以識別的網(wǎng)頁,使用搜索字符串“OutputCache”輸出緩存。
◆ 你能使用輸出緩存?
在審查您的網(wǎng)頁時,開始問自己:如果可以緩存整個頁面 。如果整個頁面不能被緩存,可以把它的部分被緩存?即使數(shù)據(jù)不是一成不變的,可以考慮使用輸出緩存 。如果您的內(nèi)容并不需要在近實(shí)時傳送,考慮輸出緩存。
使用輸出緩存緩存,無論是整個頁面或部分頁面可以顯著提高性能 。
◆ 有,將更好地存儲在緩存中的靜態(tài)數(shù)據(jù)?
識別應(yīng)用程序端的數(shù)據(jù)是靜態(tài)的還是很少更新。這種類型的數(shù)據(jù)存儲在緩存中的一個偉大的候選人。
◆ 你訪問緩存中的項(xiàng)目為空值之前檢查嗎?
前檢查null訪問緩存的項(xiàng)目,如下面的代碼片段所示,您可以提高性能。
- Object item = Cache["myitem"];
- if (item==null)
- {
- // repopulate the cache
- }
這有助于避免任何導(dǎo)致的異常空對象。為了找到你的代碼在您訪問緩存。
您使用會話狀態(tài)?
使用下面的復(fù)習(xí)題,審查代碼的使用會話狀態(tài):
◆ 你不需要時禁用會話狀態(tài)?
默認(rèn)情況下,會話狀態(tài)仍然。如果您的應(yīng)用程序不使用會話狀態(tài),禁用它在Web.config文件如下:
如果您的應(yīng)用程序的某些部分需要會話狀態(tài),確定不使用它,這些頁面禁用它通過使用下面的頁面級別屬性的頁面。
◆ 最大限度地減少使用的會話狀態(tài),增加了應(yīng)用程序的性能。
◆ 你有頁面不寫一個會話嗎?
使用會話狀態(tài)的頁面請求在內(nèi)部使用ReaderWriterLock,管理會話狀態(tài)的訪問。對于只讀會話數(shù)據(jù)的網(wǎng)頁,,考慮的EnableSessionState設(shè)置為ReadOnly。
- <%@ Page EnableSessionState="ReadOnly" . . .%>
這是特別有用,當(dāng)您使用HTML框架。默認(rèn)設(shè)置(由于ReaderWriterLock)頁面執(zhí)行序列化。將它設(shè)置為只讀,可以防止阻塞和允許更多的并行。
◆ 你檢查之前在會話狀態(tài)的訪問中的項(xiàng)目為空值?
為空,然后再訪問該項(xiàng)目的檢查,在下面的代碼所示,您可以提高性能。
- object item = Session["myitem"];
- if(item==null)
- {
- // do something else
- }
常見的錯誤,從會話狀態(tài)中檢索數(shù)據(jù)時是不檢查,如果數(shù)據(jù)是空的,前訪問,然后捕獲由此導(dǎo)致的異常。你應(yīng)該避免這種情況,因?yàn)楫惓J前嘿F的。要找到你的代碼訪問會話狀態(tài),你可以搜索字符串“會議”。
◆ 你復(fù)雜的對象存儲在會話狀態(tài)嗎?
避免復(fù)雜的對象存儲在會話狀態(tài),特別是如果你使用一個徹頭徹尾的進(jìn)程外會話狀態(tài)存儲。當(dāng)使用進(jìn)程外會話狀態(tài),對象被序列化和反序列化的每個請求,從而降低性能。
◆ 你STA COM對象存儲在會話狀態(tài)嗎?
存儲在會話狀態(tài)中的單線程單元(STA)COM對象會導(dǎo)致線程關(guān)聯(lián),因?yàn)闀捊壎ǖ皆瓉淼木€程上創(chuàng)建該組件。這嚴(yán)重影響性能和可擴(kuò)展性。確保您使用以下頁面級別屬性在任何網(wǎng)頁上,STA COM對象存儲在會話狀態(tài)。
這力量運(yùn)行頁面的STA線程池,避免任何昂貴的公寓開關(guān)從默認(rèn)的多線程單元(MTA)為ASP.NET線程池。在可能的情況下,避免使用STA COM對象。
你使用應(yīng)用程序狀態(tài)嗎?
使用下面的復(fù)習(xí)題,如何有效地評估你的代碼使用應(yīng)用程序狀態(tài):
◆ 你STA COM組件存儲在應(yīng)用程序的狀態(tài)?
避免STA COM組件存儲在應(yīng)用程序的狀態(tài)在可能的情況下。這樣做有效地瓶頸您的應(yīng)用程序到一個單獨(dú)的執(zhí)行線程訪問組件時。在可能的情況下,應(yīng)避免使用STA COM對象。
◆ 你使用的應(yīng)用程序狀態(tài)字典嗎?
用于存儲只讀的值可以設(shè)置在應(yīng)用程序初始化時,不改變之后,你應(yīng)該使用的應(yīng)用程序的狀態(tài)字典。要知道在代碼中使用時,應(yīng)用程序的狀態(tài),如以下幾個問題:
分配到應(yīng)用程序變量的存儲的內(nèi)存沒有被釋放,除非它們被取出或更換。
應(yīng)用程序狀態(tài)不是Web場或Web園 - 共享存儲在應(yīng)用程序狀態(tài)中的變量是全球性的的特定應(yīng)用程序運(yùn)行過程中,。每個應(yīng)用程序進(jìn)程可以有不同的價值觀。
◆ 考慮使用以下替代應(yīng)用程序的狀態(tài):
為應(yīng)用程序而不是使用狀態(tài)字典創(chuàng)建的靜態(tài)屬性。它是更有效的訪問狀態(tài)字典查找比一個靜態(tài)屬性。例如,考慮下面的代碼:
這是更有效地使用下面的代碼:
使用配置文件,用于存儲應(yīng)用程序的配置信息。
考慮緩存數(shù)據(jù)是足夠的揮發(fā)性,它不能存儲在應(yīng)用程序的狀態(tài),但需要定期更新緩存中的對象,從一個持久化介質(zhì)。
使用會話存儲用戶特定的信息。你可以找出你的代碼的地方使用搜索字符串“應(yīng)用”應(yīng)用程序的狀態(tài)。
你使用應(yīng)用程序狀態(tài)嗎?
NET Framework公開各種線程和同步功能,您的代碼中使用多線程的方式可以有一個應(yīng)用程序的性能和可擴(kuò)展性的顯著影響。使用下面的復(fù)習(xí)題,到如何有效地評估你的ASP.NET代碼使用線程:
◆ 你創(chuàng)建線程每個請求的基礎(chǔ)上?
避免手動創(chuàng)建ASP.NET應(yīng)用程序中的線程。創(chuàng)建線程是一項(xiàng)昂貴的的操作,需要初始化托管和非托管的資源。如果你需要額外的線程來執(zhí)行工作,使用CLR線程池。為了找到你的代碼的地方,你正在創(chuàng)建線程,搜索字符串“的ThreadStart”。
◆ 你執(zhí)行長時間運(yùn)行的阻塞操作嗎?
避免堵在你的ASP.NET應(yīng)用程序在可能的情況下操作。如果你必須執(zhí)行一個長時間運(yùn)行的任務(wù),然后再考慮使用異步執(zhí)行(如果你可以自由調(diào)用線程)或使用異步“火,忘記”模型。
資源的有效管理呢?
使用以下的檢討,以評估您的代碼如何有效地使用資源的問題:
你明確地關(guān)閉資源?
確保您的代碼明確關(guān)閉對象實(shí)現(xiàn)IDisposable接口通過調(diào)用對象的Dispose或Close方法。未能關(guān)閉資源和迅速,可導(dǎo)致內(nèi)存消耗增加,表現(xiàn)不佳。
沒有關(guān)閉數(shù)據(jù)庫連接,是一個普遍問題。使用finally塊(或在C#中使用的塊)來釋放這些資源,以確保資源被關(guān)閉,即使發(fā)生異常。
池共享資源呢?
檢查您使用池訪問共享資源時,以提高性能。確保共享資源,如數(shù)據(jù)庫連接和服務(wù)組件,可以匯集,正在匯集。沒有集中,你的代碼即被初始化的開銷每個共享資源的使用時間。
你晚獲取資源和早期釋放他們?
打開共享資源之前,你需要他們,只要你完成他們釋放。持有時間比你需要的人士,到資源,增加內(nèi)存的壓力,并增加對這些資源的競爭,如果他們共享。
你塊數(shù)據(jù)傳輸I / O調(diào)用嗎?
如果你需要在塊I / O調(diào)用的數(shù)據(jù)傳輸,分配和針塊用于發(fā)送和接收緩沖區(qū)。如果您需要進(jìn)行并發(fā)的I / O調(diào)用,你應(yīng)該創(chuàng)建一個固定的回收這是在不同的客戶,而不是每個請求的基礎(chǔ)上創(chuàng)建一個緩沖區(qū)的緩沖區(qū)池。這可以幫助您避免堆碎片和減少緩沖區(qū)的創(chuàng)建時間。
您有效地管理弦樂?
使用下面的復(fù)習(xí)題,以評估如何有效地你的ASP.NET代碼操縱字符串:
你使用的格式化輸出的Response.Write嗎?
確定你的代碼在您連接輸出,如創(chuàng)建一個表,并考慮使用Response.Write來代替。回復(fù)于書面內(nèi)容給客戶端的最有效的方法。
你使用StringBuilder來連接字符串嗎?
如果追加數(shù)量是未知的,你不能發(fā)送數(shù)據(jù)到客戶端使用的Response.Write立即的,使用StringBuilder類來連接字符串。
你=連接字符串+嗎?
確定在你的代碼的地方,你使用+ =運(yùn)算符執(zhí)行字符串串聯(lián)。如果追加的數(shù)量是未知的,或你追加一個未知大小的數(shù)據(jù),考慮使用StringBuilder類來代替。
您有效地管理例外?
使用以下審查問題,如何有效地評估您的代碼中使用異常:
有你在Global.asax中實(shí)現(xiàn)了一個錯誤處理程序?
雖然落實(shí)在Global.asax中的錯誤處理程序不一定提高性能,它可以幫助您確定您的應(yīng)用程序,在發(fā)生意外異常。您找出發(fā)生的異常后,采取適當(dāng)?shù)男袆?,以避免這些例外。
你使用的try /可支配資源終于?
確保在finally塊中釋放,以確保他們得到清除,即使在異常事件,可支配資源。不處置的資源,是一個普遍問題。
請問你的代碼,避免異常?
你的代碼應(yīng)該試圖避免例外,以提高性能,因?yàn)楫惓?dǎo)致顯著的開銷。使用以下方法:
檢查空值。
不要使用異常來控制常規(guī)應(yīng)用程序邏輯。
不要捕獲異常,你不能處理和模糊有用的診斷信息。
使用重載Server.Transfer方法Server.Transfer的(字符串,BOOL),而不是Server.Transfer的,Response.Redirect,Response.End,以避免異常。
您優(yōu)化您的網(wǎng)頁?
使用下面的復(fù)習(xí)題,評估aspx頁的效率。
你采取的步驟,以減少頁面大小?
盡量保持頁面大小到最低限度。較大的頁大小,因?yàn)樵黾拥奶幚砟芰途W(wǎng)絡(luò)帶寬利用率,從而可能導(dǎo)致網(wǎng)絡(luò)擁塞的顯著增加CPU的負(fù)載增加。這兩個因素導(dǎo)致響應(yīng)時間增加為客戶。考慮以下的指引,以協(xié)助減少頁面大?。?/p>
包括使用腳本(腳本,而不是點(diǎn)綴的HTML代碼標(biāo)簽)。
從你的HTML中刪除多余的空白字符。
禁用它不需要服務(wù)器控件的視圖狀態(tài)。
避免長時間的控制名稱。
最小化使用的圖形,并使用壓縮圖像。
考慮使用級聯(lián)樣式表,以避免反復(fù)相同的格式指令發(fā)送到客戶端。
緩沖禁用?
確保你有緩沖啟用。緩沖會導(dǎo)致服務(wù)器緩沖輸出和發(fā)送后,才完成了處理頁面。如果緩沖被禁止,勞動者的過程,需要不斷流從所有的并發(fā)請求的響應(yīng),這可能是內(nèi)存和處理器上的顯著的開銷,尤其是當(dāng)你使用ASP.NET進(jìn)程模型。要找出緩沖禁用,如果你有,你可以搜索以下字符串為您的代碼庫:“緩沖區(qū)”和“BufferOutput。”確保緩沖區(qū)<pages>元素屬性設(shè)置為true,在您的應(yīng)用程序的Web.config 文件。
- <pages buffer="True">
#p#
你使用Response.Redirect嗎?
搜索你的代碼為“Response.Redirect”,并考慮更換與Server.Transfer的。這并不招致了一個新的請求成本,因?yàn)樗苊饬巳魏慰蛻舳酥囟ㄏ颉?/p>
你不能總是簡單地取代Response.Redirect調(diào)用Server.Transfer的調(diào)用,因?yàn)镾erver.Transfer使用一個新的處理程序在執(zhí)行的處理程序階段。Response.Redirect產(chǎn)生第二個請求。如果你需要不同的身份驗(yàn)證和授權(quán),緩存,或其他運(yùn)行時設(shè)備上的目標(biāo),這兩個機(jī)制是不等價的。Response.Redirect導(dǎo)致一個額外的請求被發(fā)送到服務(wù)器。Response.Redirect也使得用戶可見的網(wǎng)址。這可能需要在某些情況下,您要求用戶書簽的新位置。
你使用Page.IsPostBack?
檢查在你的頁面的邏輯使用Page.IsPostBack屬性,以減少多余的處理,避免不必要的初始化成本。使用Page.IsPostBack屬性有條件地執(zhí)行代碼,根據(jù)頁面是否是響應(yīng)服務(wù)器控件事件生成,或者它是否是首次加載。
你驗(yàn)證用戶輸入?
檢查,驗(yàn)證用戶輸入客戶端上,以減少服務(wù)器的往返行程。這也提供了更好的反饋給用戶。出于安全原因,確保任何客戶端驗(yàn)證與對應(yīng)的服務(wù)器端驗(yàn)證贊揚(yáng)。
你有沒有制定明確和嚴(yán)格的真實(shí)?
確保您使用Option Strict和明確,以減少意外的后期綁定,當(dāng)使用Visual Basic。NET中。
- <%@ Page Language="VB" Explicit="true" Strict="true" %>
這可以很容易地搜索,使用正則表達(dá)式的Findstr.exe進(jìn)行文件。
- C:\findstr /i /s /r /c:"<%.*@.*page.*%>" *.aspx
- pag\default.aspx:<%@ Page Language="VB" %>
- pag\login.aspx:<%@ page Language="VB" %>
- pag\main.aspx:<%@ Page Language="VB" Explicit="true" Strict="true" %>
- ...
您已禁用調(diào)試?
檢查你的Web.config文件,并確保調(diào)試設(shè)置為false 節(jié)和檢查。aspx頁,以確保調(diào)試設(shè)置為false。如果啟用了調(diào)試,編譯器不生成優(yōu)化的代碼和頁面批次編譯。您可以通過使用正則表達(dá)式的Findstr.exe進(jìn)行文件。aspx頁。
- C:\pag>findstr /i /r /c:"<%.*@.*page.*debug=.*true*.*%>" *.aspx
- login.aspx:<%@ page Language="VB" Debug="True" %>
- main.aspx:<%@ Page Language="c#" Debug="True" %>
您已禁用跟蹤?
檢查您的Web.config文件,以確保在部分禁用跟蹤。另外,請檢查你的。aspx頁,以確保跟蹤設(shè)置為false。您可以通過使用正則表達(dá)式的Findstr.exe進(jìn)行文件。aspx頁。
- C:\pag>findstr /i /r /c:"<%.*@.*page.*trace=.*true*.*%>" *.aspx
- login.aspx:<%@ page Language="VB" Trace="True" %>
- main.aspx:<%@ Page Language="c#" Trace="True" %>
你積極的超時嗎?
設(shè)置超時積極相應(yīng)調(diào)整。評估每一頁,并確定一個合理的超時。默認(rèn)頁是在Machine.config執(zhí)行超時屬性指定超時90秒。服務(wù)器資源舉行,直到請求被處理完全或執(zhí)行時間,以較早者為準(zhǔn)。在大多數(shù)情況下,用戶不必等待這樣一個長時間才能完成的請求。他們要么完全放棄請求,或發(fā)送一個新的請求,這進(jìn)一步增加了服務(wù)器上的負(fù)載。
您使用視圖狀態(tài)?
使用下面的復(fù)習(xí)題,以評估您的應(yīng)用程序如何有效地使用視圖狀態(tài):
你禁用視圖狀態(tài)時,它不需要?
每一頁的評估,以確定是否需要查看狀態(tài)啟用。視圖狀態(tài)會增加開銷每個請求。開銷包括增加頁面發(fā)送到客戶端,以及一個序列化和反序列化成本的大小。你不需要查看在下列條件下的狀態(tài):
頁面不回自己的頁面僅用于輸出和不依賴于響應(yīng)處理。
你的頁面的服務(wù)器控件不處理事件,你有沒有動態(tài)的或數(shù)據(jù)綁定的屬性值(或他們是在每個請求的代碼)。
如果你忽略的舊數(shù)據(jù),并重新填充的服務(wù)器控制每次刷新頁面。
您已經(jīng)采取步驟,以減少您的視圖狀態(tài)的大小嗎?
評估每一頁的視圖狀態(tài)的使用。要確定一個頁面的視圖狀態(tài)的大小,您可以啟用跟蹤,看看每個每個控制如何使用它??刂瓶刂频幕A(chǔ)上,禁用視圖狀態(tài)。
你使用服務(wù)器控件嗎?
使用下面的復(fù)習(xí)題,檢討如何有效地你的ASP.NET應(yīng)用程序使用服務(wù)器控件:
你使用服務(wù)器控件時,你不需要嗎?
評估您的服務(wù)器控件的使用,以確定是否可以替換他們具有重量輕HTML控件或可能是靜態(tài)的文本。你也許可以在下列情況下更換一個服務(wù)器控件:
在控制顯示的數(shù)據(jù)是靜態(tài)的,例如,一個標(biāo)簽。
你并不需要以編程方式訪問在服務(wù)器端控制。
控制顯示的是只讀數(shù)據(jù)。
在回處理過程中不需要控制。
你有服務(wù)器控制的深層次嗎?
服務(wù)器控件嵌套很深的層次復(fù)合的建設(shè)控制樹成本??紤]呈現(xiàn)的內(nèi)容自己使用Response.Write或建立一個自定義的控制,并呈現(xiàn)。要確定的控制和控制層次,使頁面的跟蹤。
您從您的ASPX頁面訪問數(shù)據(jù)嗎?
大多數(shù)ASP.NET應(yīng)用程序需要某種形式的數(shù)據(jù)訪問。數(shù)據(jù)訪問的性能和可擴(kuò)展性問題發(fā)現(xiàn)一個共同的地方。審查以下問題,以幫助改善您的應(yīng)用程序的頁面級別的數(shù)據(jù)訪問:
你頁大的結(jié)果集?
確定您的應(yīng)用程序領(lǐng)域,大的結(jié)果集顯示和考慮分頁的結(jié)果。大的結(jié)果集顯示給用戶,可以對性能有顯著影響。
你使用數(shù)據(jù)集時,你可以使用DataReaders嗎?
如果你不需要緩存數(shù)據(jù),層與層之間或數(shù)據(jù)的交換數(shù)據(jù)綁定到一個控制和只需要只進(jìn),只讀訪問數(shù)據(jù),然后使用DataReader,而不是。
您可以使用數(shù)據(jù)綁定嗎?
使用下面的復(fù)習(xí)題,審查代碼的數(shù)據(jù)綁定使用:
你用的Page.DataBind嗎?
避免調(diào)用的Page.DataBind和單獨(dú)的每個控件綁定優(yōu)化您的數(shù)據(jù)綁定。調(diào)用的Page.DataBind遞歸調(diào)用上的每個頁面上的控件的DataBind。
你使用的DataBinder.Eval嗎?
DataBinder.Eval的使用反射,從而影響性能。在大多數(shù)情況下,DataBinder.Eval的被稱為從一個頁面內(nèi)多次,因此,實(shí)施替代方法提供了一個很好的機(jī)會,以提高性能。
避免以下做法:
- <itemtemplate>
- <table><tbody><tr>
- <td><%# DataBinder.Eval(Container.DataItem,"field1") %></td>
- <td><%# DataBinder.Eval(Container.DataItem,"field2") %></td>
- </tr></tbody></table>
- </itemtemplate>
使用顯式轉(zhuǎn)換。它提供了更好的性能,避免反射的成本。投作為一個DataRowView Container.DataItem,如果數(shù)據(jù)源是DataSet。
- <itemtemplate>
- <table><tbody><tr>
- <td><%# ((DataRowView)Container.DataItem)["field1"] %></td>
- <td><%# ((DataRowView)Container.DataItem)["field2"] %></td>
- </tr></tbody></table>
- </itemtemplate>
投作為一個String Container.DataItem如果數(shù)據(jù)源是一個數(shù)組或一個ArrayList。
- <itemtemplate>
- <table><tbody><tr>
- <td><%# ((String)Container.DataItem)["field1"] %></td>
- <td><%# ((String)Container.DataItem)["field2"] %></td>
- </tr></tbody></table>
- </itemtemplate>
aspx頁面調(diào)用非托管代碼嗎?
使用下面的復(fù)習(xí)題,審查代碼的互操作性使用:
你有沒有啟用調(diào)用STA COM組件ASPCOMPAT嗎?
確保任何頁面調(diào)用STA COM組件ASPCOMPAT頁面級別屬性設(shè)置。這將指示ASP.NET使用STA線程池線程來執(zhí)行當(dāng)前頁面的請求。默認(rèn)情況下,ASP.NET使用MTA線程池來處理頁面請求。如果您正在使用STA元件,組件綁定到創(chuàng)建的線程。這將導(dǎo)致一個從線程池中的線程STA對象是創(chuàng)建的線程昂貴的線程切換。
你創(chuàng)建STA COM組件在頁面的構(gòu)造?
檢查您的網(wǎng)頁,以確保您沒有創(chuàng)建STA COM組件在頁面的構(gòu)造。創(chuàng)建STA組件中的Page_Load,Page_Init或其他事件,而不是。頁面的構(gòu)造函數(shù)總是一個MTA線程上執(zhí)行。當(dāng)STA COM組件是從一個MTA線程創(chuàng)建,創(chuàng)建STA COM組件在主機(jī)上的STA線程。在同一個線程(主機(jī)STA)執(zhí)行單元線程組件從MTA線程創(chuàng)建的所有實(shí)例。這意味著,即使所有的用戶都有他們自己的COM組件實(shí)例的引用,所有到這些組件的調(diào)用序列化這一個線程,并在同一時間只有一個呼叫執(zhí)行。這將有效地瓶頸一個單獨(dú)的線程的頁面,并造成重大的性能下降。如果您使用的是AspCompat屬性,這些事件運(yùn)行一個線程使用STA線程池,它在一個較小的性能結(jié)果擊中由于線程切換。
你用Server.Create對象嗎?
避免使用Server.CreateObject和早期綁定到您的組件在編譯時盡可能。Server.CreateObject的使用后期綁定,主要是為了向后兼容提供。搜索您的代碼庫,看看是否使用這個例程,作為替代,創(chuàng)建互操作程序集,利用早期綁定的優(yōu)勢。
你有沒有審查Machine.config中的設(shè)置嗎?
使用下面的復(fù)習(xí)題,審查您的應(yīng)用程序的部署計(jì)劃:
調(diào)整適當(dāng)?shù)木€程池?
CLR線程池調(diào)整適當(dāng)?shù)恼{(diào)整,提高了性能顯著。在部署應(yīng)用程序之前,確保該線程池已調(diào)整為您的應(yīng)用程序。
適當(dāng)配置的內(nèi)存限制?
配置ASP.NET內(nèi)存限制,確保最佳的ASP.NET緩存的性能和服務(wù)器的穩(wěn)定性。在IIS 5.0中,或者當(dāng)您使用在IIS 6.0的ASP.NET進(jìn)程模型,配置Machine.config中的內(nèi)存限制。在IIS 6.0中,您使用IIS MMC管理單元中配置的內(nèi)存限制。
你刪除不必要的HttpModules?
包括的HttpModules,你不需要添加額外的開銷ASP.NET請求處理。檢查您已刪除或注釋掉在未使用的HttpModules 的Machine.config。
原文:http://www.cnblogs.com/caltion/archive/2011/10/12/2208283.html
【編輯推薦】