ASP.NET 效能概觀
自網際網路開始以來,建立迅速回應使用者要求的 Web 應用程式 (即使伺服器上正在處理大量要求) 一直就是開發人員和 IT 工作人員的挑戰。監視網站效能是所有網際網路和 Intranet 開發人員都必須勝任的事項。ASP.NET 即著眼於這點來設計。
ASP.NET 模型提供一些不包括於 ASP 先前版本的內建效能加強功能。特別是,有兩個涉及處理 HTTP 要求的加強功能。首先,當 ASP.NET 網頁初次受要求時,會動態編譯 Page 類別的執行個體 (Instance) (在 ASP 的先前版本中,網頁程式碼是以要求顯示在網頁上的順序來解譯)。Common Language Runtime Just-In-Time (JIT) 會在 Run Time 時將 ASP.NET Managed 網頁程式碼編譯為處理伺服器的機器碼。其次,為第一個要求編譯 Page 執行個體時,會在伺服器上加以快取。對於該網頁的各個後續要求而言,將會執行類別的快取執行個體。在初始要求之後,只有在網頁的原始來源或其中一個相依性變更時,才會重新編譯 Page 類別。
此外,ASP.NET 還會快取內部物件 (例如伺服器變數),以加速使用者程式碼存取。身為 .NET Framework 的一部份,ASP.NET 將從 Common Language Runtime 所提供的效能加強功能獲益,這包括先前提到的 JIT 編譯、針對單一和多處理器電腦微調的 Common Language Runtime 等等。
遺憾的是,這些加強功能無法在應用程式要同時處理許多 HTTP 要求時避免您寫出不會正常執行的程式碼。您必須測試您的應用程式,確保它符合使用者的需求。有四個通用的效能度量,您可以測試它們來確保應用程式正常執行。
- 執行時間
處理要求所需時間,通常在伺服器傳回用戶端的第一位元組和最後位元組之間來測量。執行時間將直接影響輸送量的計算。 - 回應時間
提出要求與從伺服器傳回用戶端的第一個位元組之間的時間長度。這經常是用戶端使用者最容易察覺的效能觀點。如果應用程式回應時間太長,使用者可能會變得沒有耐性而移到另一個網站。應用程式的回應時間可以不受 (甚至反比於) 輸送速率的影響來變動。 - 延展性 (Scalability)
應用程式在有更多資源 (記憶體、處理器或電腦) 配置給它時會執行得更好的能力度量。通常,它是關於處理器數目之輸送量變更速率的度量。 - 輸送量
Web 應用程式每單位時間可服務的要求數,經常以每秒要求來測量。輸送量的不同取決於伺服器承擔的負荷 (用戶端執行緒的數目)。這通常被視為需要最佳化的最重要效能度量資訊 (Metric)。
為了要撰寫能夠妥善執行的應用程式,維持這些度量資訊之間的平衡是很重要的。沒有單一的度量可以描繪應用程式在不同環境下的行為,但是把數個度量集合起來就可以讓您知道應用程式執行得有多好。如需採取這類度量,以及 ASP.NET 提供的效能計數器的詳細資訊,請參閱監視 ASP.NET 應用程式效能。
如需如何建立高效能應用程式的建議,請參閱開發高效能 ASP.NET 應用程式。