簡體   English   中英

加速 ASP.Net 網站或應用程序

[英]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 已插入除了一個(主樣式表)之外的所有內容。 為什么這么多?

  1. .net 3.5 SP1 中的腳本組合
  2. 快速網站的最佳實踐
  3. HTTP 壓縮 (gzip)
  4. 壓縮 JS / CSS(不同於 http 壓縮,縮小 javascript)
    1. YUI 壓縮機
    2. .NET YUI 壓縮器

我最好的建議是查看YUI 內容 他們有一些很棒的文章,討論諸如CSS 精靈之類的東西,並有一些不錯的 javascript 庫來幫助減少瀏覽器發出的請求數量

如果您使用 Firefox 來測試您的網站,您可能想嘗試來自 Yahoo! 稱為YSlow

它會分析您的網頁,並為高性能網站的每個最佳實踐提供 AF 等級(A 是最好的,F 是最差的)。 它將幫助您跟蹤您可以優化以獲得加速的網站元素。

更新

現在YSlow擴展與所有現代瀏覽器兼容,如 Firefox、Chrome、Opera、Safari 等,請在此處閱讀更多內容。

默認情況下關閉視圖狀態,即使是最簡單的頁面也會有白天和黑夜的差異。

幾個月前,我寫了一篇關於提高 ASP.NET 頁面性能的博客文章 這里有一些快速簡便的方法 -

  • 關閉視圖狀態
  • 關閉事件驗證
  • 實現 HTTP gzip/deflate 壓縮以減少響應大小(服務器必須發送回客戶端的字節數)
  • 嘗試優化/最小化每個請求的數據庫調用

我認為您確實需要能夠在生產中運行時從應用程序中獲取一些實際的 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM