[英]Speeding up an ASP.Net Web Site or Application
我有一個支持 Ajax.Net 的 ASP.Net 2.0 網站。 站點和數據庫的托管以及數據庫的架構都不受我的控制。 在硬件測試中,我確實控制了站點的性能,但是在客戶端的硬件上,重新加載或更改頁面時會出現明顯的延遲。
我想做的是讓我的應用程序在交付時盡可能緊湊和快速。 一種想法是為站點的所有靜態資源設置到期日期,以便在頁面加載時不會調用它們。 我所說的資源是指圖像、鏈接樣式表和 JavaScript 源文件。 是否有捷徑可尋?
還有哪些其他方法可以優化 .Net 網站?
更新:我在網站上運行了 YSlow,我受到的打擊最嚴重的地方是正在加載的 JavaScript 和樣式表的數量(23 個 JS 文件和 5 個樣式表)。 Ajax.net 和 Asp 已插入除了一個(主樣式表)之外的所有內容。 為什么這么多?
我最好的建議是查看YUI 內容。 他們有一些很棒的文章,討論諸如CSS 精靈之類的東西,並有一些不錯的 javascript 庫來幫助減少瀏覽器發出的請求數量。
默認情況下關閉視圖狀態,即使是最簡單的頁面也會有白天和黑夜的差異。
我認為您確實需要能夠在生產中運行時從應用程序中獲取一些實際的 PerfMon 數據/遙測數據,以便能夠就優化內容做出明智的決定。
作為一次性提示,我會確保您的應用程序部署為發布版本,並在您的 web.config 的“編譯”部分中設置 debug="false"。
您似乎開始假設您的問題是下載大小 - 情況可能不一定如此。 您應該對您的 ASP.NET 站點進行一些實驗,以確定您的代碼中是否存在導致過度延遲的區域。 如果事實證明下載大小不是您的問題,您將需要找到緩存結果的方法(查看輸出緩存,這是 ASP.NET 功能)或優化您的代碼。
在任何情況下 - 查看性能問題的第一步總是首先驗證您的假設,然后決定行動方案。
將 ASP.NET 和 Ajax(任何 Ajax 庫)一起使用時,一般的事情是避免將 Page_Load 和 Page_Init(以及它們的方法對應物)事情變得復雜,因為它們將在每個 Ajax 請求上執行。
當我這么說時,我會認真地放棄 ASP.NET AJAX 並使用其他任何東西......
Anthem.NET、AjaxPRO.NET、jQuery 或 ASP.NET AJAX 以外的任何東西......
當然,我自己會使用Ra-Ajax,因為那是我的項目。 但話又說回來,我有偏見......
您可以開始研究緩存策略。 像 CSS(甚至是壓縮的)和圖像(甚至是優化的)這樣的靜態文件應該只需要在一段時間內被瀏覽器下載一次。
已經提到了 AJAX 的 Scirpt 組合,但我沒有注意到參考 ScriptReferenceProfiler MS 已在 codeplex 上發布,以幫助確定要組合的內容。 Mike Ormond 在這方面有一個很好的起點。
如果您對數據庫執行大量 INSERT,另一個提示是仔細檢查服務器的磁盤緩存是否已打開。 舉個例子,我有一個數據導入器在運行期間執行 120 萬次插入。 花了 4 個小時,在沒有緩存的情況下進行了更改。 用了 16 分鍾。
您可以根據支持它的客戶端打開壓縮。 看這篇文章: 鏈接文字
除非更改,否則不應重新發送靜態資源。 IIS 將發送一個響應代碼,告訴瀏覽器使用緩存版本。
您還可以查看 ASP.NET 輸出緩存,它可以相當精細地應用於頁面的不同部分:
http://msdn.microsoft.com/en-us/library/xsbfdd8c(VS.71).aspx
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.