日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
ASP.NET中性能和擴(kuò)展性的秘密

ASP.NET有許多一旦你發(fā)現(xiàn)了就會(huì)大幅提高性能和擴(kuò)展性的秘密。比如:在membership和Profile provider 中就有快速實(shí)現(xiàn)驗(yàn)證和授權(quán)的秘密。此外:ASP.NET的http管道可以避免每個(gè)請(qǐng)求中的不必要代碼。還不只是這些,ASP.NET的線程可以充分發(fā)揮性能。瀏覽器的頁(yè)面片斷緩存機(jī)制(不是服務(wù)器緩存)可以在反復(fù)的訪問(wèn)中節(jié)約下載時(shí)間。在界面加載完成后給你的網(wǎng)站提供快速流暢的體驗(yàn)。最后,CDN和適當(dāng)?shù)氖褂胔ttp緩存頭可以使你的網(wǎng)站訪問(wèn)飛快。這篇文章中,你可以學(xué)到一些提高你的ASP.NET網(wǎng)站性能的技巧。
我們要討論的問(wèn)題:
◆管線最佳優(yōu)化
◆ASP.NET過(guò)程最佳處理
◆進(jìn)行之前要對(duì)ASP.NET做的事情
◆內(nèi)容傳送網(wǎng)絡(luò)
◆在瀏覽器中緩存AJAX請(qǐng)求
◆優(yōu)化緩存機(jī)制
◆優(yōu)化頁(yè)面裝載速度提高用戶體驗(yàn)
◆盡可能的優(yōu)化ASP.NET 2.0的profile provider.
◆在不布置網(wǎng)站的情況下如何查詢membership表
◆DOS攻擊
以上技巧可用于任何基于ASP.NET的網(wǎng)站,尤其是使用了membership和profile provider的網(wǎng)站。
1.管線最佳優(yōu)化
一些ASP.NET默認(rèn)的HttpModules 管理請(qǐng)求的管線并且每一個(gè)請(qǐng)求。例如:SessionStateModule攔截每一個(gè)請(qǐng)求,分析session cookie 來(lái)加載HttpContext中的合適的session.但是并不是所有的Modules都是必需的,比如:如果你不用membership的話,就不用配置FormsAuthentication模塊;如果你不用windows身份驗(yàn)證就不用配置WindowsAuthentication,這些模塊只是包含在管線里面,為每一個(gè)請(qǐng)求執(zhí)行一些并不是必須的代碼。默認(rèn)的模塊定義在machine.config中($WINDOWS$\Microsoft.NET\Framework\$VERSION$\CONFIG)
如下所示:

      
      
      
  1.  
  2.    name="OutputCache" type="System.Web.Caching.OutputCacheModule" /> 
  3.    name="Session" type="System.Web.SessionState.SessionStateModule" /> 
  4.    name="WindowsAuthentication" 
  5.         type="System.Web.Security.WindowsAuthenticationModule" /> 
  6.    name="FormsAuthentication" 
  7.         type="System.Web.Security.FormsAuthenticationModule" /> 
  8.    name="PassportAuthentication" 
  9.         type="System.Web.Security.PassportAuthenticationModule" /> 
  10.    name="UrlAuthorization" type="System.Web.Security.UrlAuthorization
  11. Module" /> 
  12.    name="FileAuthorization" type="System.Web.Security.FileAuthorization
  13. Module" /> 
  14.    name="ErrorHandlerModule" type="System.Web.Mobile.ErrorHandlerModule,  
  15.                              System.Web.Mobile, Version=1.0.5000.0,  
  16.                              Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" /> 
  17. httpModules> 

如果你想去掉這些默認(rèn)的設(shè)置,只需要在你的web.config里加入 節(jié)點(diǎn)。

      
      
      
  1.  
  2.            
  3.           name="Session" /> 
  4.           name="WindowsAuthentication" /> 
  5.           name="PassportAuthentication" /> 
  6.           name="AnonymousIdentification" /> 
  7.           name="UrlAuthorization" /> 
  8.           name="FileAuthorization" /> 
  9. httpModules> 

上面的配置適用于基于數(shù)據(jù)庫(kù)的form認(rèn)證并且不需要任何session支持的網(wǎng)站。所以這些節(jié)點(diǎn)可以被刪除。
2.ASP.NET進(jìn)程配置優(yōu)化
asp.net進(jìn)程模型進(jìn)行一些進(jìn)程級(jí)別設(shè)置,比如ASP.NET使用多少線程,超時(shí)時(shí)間,多少請(qǐng)求等待輸入輸出工作的完成等等。默認(rèn)情況下有很多限制?,F(xiàn)在硬件越來(lái)越便宜,G級(jí)內(nèi)存的服務(wù)器普遍存在,所以現(xiàn)在進(jìn)程配置的優(yōu)化可以得到更多的系統(tǒng)資源和擴(kuò)展。
一般情況下,ASP.NET的mashine.config的配置是這樣的:

      
      
      
  1.  
  2.      autoConfig="true" />   
  3. system.web> 

你應(yīng)該改變這樣的配置,用一些值設(shè)置不同的屬性來(lái)定制ASP.NET線程的工作方式。如下所示:

      
      
      
  1.  
  2.    enable="true" 
  3.    timeout="Infinite" 
  4.    idleTimeout="Infinite" 
  5.    shutdownTimeout="00:00:05" 
  6.    requestLimit="Infinite" 
  7.    requestQueueLimit="5000" 
  8.    restartQueueLimit="10" 
  9.    memoryLimit="60" 
  10.    webGarden="false" 
  11.    cpuMask="0xffffffff" 
  12.    userName="machine" 
  13.    password="AutoGenerate" 
  14.    logLevel="Errors" 
  15.    clientConnectedCheck="00:00:05" 
  16.    comAuthenticationLevel="Connect" 
  17.    comImpersonationLevel="Impersonate" 
  18.    responseDeadlockInterval="00:03:00" 
  19.    responseRestartDeadlockInterval="00:03:00" 
  20.    autoConfig="false" 
  21.    maxWorkerThreads="100" 
  22.    maxIoThreads="100" 
  23.    minWorkerThreads="40" 
  24.    minIoThreads="30" 
  25.    serverErrorMessageFile="" 
  26.    pingFrequency="Infinite" 
  27.    pingTimeout="Infinite" 
  28.    asyncOption="20" 
  29.    maxAppDomains="2000" 
  30. /> 

除了下面的值外都是一些默認(rèn)值:
maxWorkerThreads:默認(rèn)每個(gè)進(jìn)程是20個(gè)線程。在雙核的服務(wù)器上,系統(tǒng)會(huì)分配40個(gè)線程給ASP.NET,這就意味著ASP.NET在雙核服務(wù)器上同時(shí)可以處理40個(gè)并發(fā)請(qǐng)求。為了給ASP.NET的每個(gè)進(jìn)程增加線程,我曾經(jīng)設(shè)置過(guò)100.如果你的應(yīng)用的CPU強(qiáng)勁而且有更多的請(qǐng)求需要,你可以設(shè)置這個(gè)屬性。特別是你的網(wǎng)絡(luò)就用使用了大量的webservice或者上傳/下載大量數(shù)據(jù)這些不會(huì)把壓力轉(zhuǎn)到CPU上的時(shí)候。當(dāng)ASP.NET用完了所有的線程,它會(huì)停止接收更多的響應(yīng)。請(qǐng)求會(huì)排成隊(duì)列等待直到其它工作中的線程被釋放。這種情況經(jīng)常發(fā)生在網(wǎng)站接收到超出預(yù)期的點(diǎn)擊的時(shí)候,這種情況下,如果你有備用的CPU,請(qǐng)?jiān)黾舆M(jìn)程的線程數(shù)量。
maxIOThreads:默認(rèn)是20個(gè)。雙核服務(wù)器中系統(tǒng)會(huì)提供40個(gè)I/O線程給ASP.NET.I/O請(qǐng)求可以用于網(wǎng)站的文件讀寫(xiě),數(shù)據(jù)庫(kù)讀取,webservice調(diào)用,http請(qǐng)求等等。你可以把它設(shè)置的更高一點(diǎn),特別是在你的網(wǎng)站做并發(fā)的上傳/下載和 webservice調(diào)用的時(shí)候。
minWorkerThreads:當(dāng)ASP.NET自由工作線程低于這個(gè)值時(shí),ASP.NET會(huì)推送一些請(qǐng)求進(jìn)入隊(duì)列。所以你可以設(shè)置一個(gè)低值來(lái)增加當(dāng)前的請(qǐng)求數(shù)量。當(dāng)然這個(gè)值不能設(shè)置的太低,因?yàn)榫W(wǎng)站要做一些后臺(tái)處理和并行處理,這些工作都是需要一些線程來(lái)運(yùn)行的。
minIOThreads:和minWorkerThreads相當(dāng),只不過(guò)是針對(duì)I/O進(jìn)程進(jìn)行的設(shè)置。它可以設(shè)置的比in case of 低,因?yàn)镮/O并行處理線程沒(méi)有什么問(wèn)題。
memoryLimit:指定最大的內(nèi)存使用大小。它指定的是占所有系統(tǒng)內(nèi)存的百分比,是指定系統(tǒng)處理進(jìn)程時(shí)可以使用的最大內(nèi)存數(shù)。如果服務(wù)器上只有你自己的網(wǎng)站而且沒(méi)有其它的使用內(nèi)存的進(jìn)程,你可以把它設(shè)置的高一些,比如:80.如果你的網(wǎng)站存在內(nèi)存泄露問(wèn)題,你最好把這個(gè)值設(shè)置的低一點(diǎn),這樣泄露的內(nèi)存不久就會(huì)釋放出來(lái),這樣會(huì)保持網(wǎng)站的正常運(yùn)行。特別是你在使用COM組件造成內(nèi)存泄露的時(shí)候。當(dāng)然這只是個(gè)臨時(shí)方案,最終你還是要解決這個(gè)內(nèi)存泄露的問(wèn)題。
除了processModel之外,ASP.NET還可以設(shè)置單一IP最大的請(qǐng)求數(shù)量:

      
      
      
  1.  
  2.    
  3.      address="*" maxconnection="100" /> 
  4.    connectionManagement> 
  5. system.net> 

默認(rèn)是2,這個(gè)值太低了。這意味著每一個(gè)IP最多只能有兩個(gè)請(qǐng)求到你的網(wǎng)站,這樣會(huì)造成請(qǐng)求擁堵。這里設(shè)置成了100,當(dāng)然有必要的話,你可以設(shè)置得更高。

【編輯推薦】

  1. 淺談ASP.NET中ViewState與ViewData的區(qū)別
  2. ASP.NET 3.5圖表控件親密接觸
  3. 自己動(dòng)手實(shí)現(xiàn)Asp.net的MVC框架
  4. ASP.NET MVC應(yīng)用程序的本地化、單元測(cè)試和AJAX應(yīng)用
  5. ASP.NET中防止用戶多次登錄的方法

網(wǎng)站欄目:ASP.NET中性能和擴(kuò)展性的秘密
標(biāo)題網(wǎng)址:http://www.dlmjj.cn/article/cdjcdcs.html