開發高Web應用程序常用優化性能的技巧

       如何開發高性能的Web應用程序,是程序員和用戶都希望得到的效果,性能問題是一個綜合問題,如今普遍開發的web應用程序都會涉及到各種技術點,各種算法、設計模式、架構、數據庫技術,因此性能的優化必然也是一個綜合的方法。

       我們知道

              不同的SQL 語句得到相同的一個結果,數據庫所用的查詢時間可以相差10倍深圳100倍以上;

              一個有策略性的緩存可以減少成千上萬次重複的數據庫訪問;

             我們專注於數據庫SQL 語句本身查詢計劃的時候,策略性的設計冗餘字段 或 分開計算部分結果,深圳可以使查詢的時間縮短到原來的1/100;

             。。。。。。。

      

       性能的優化是一個綜合的方法,任何的技巧都是針對特定場景的優化,同時也可能帶來另一方面的負面影響,因此我們開發高性能的WEB應用程序的時候,也需要針對特定場景選擇特定的技巧。E8.Net的客戶在開發高性能的Web應用程序的時候用到了各種優化技巧,主要技巧總結如下:

 

       1、Sql 依賴緩存:

            .Net Framework 2.0提供了Sql 依賴緩存的技術,這個技術可以使很多所有用戶讀到相同結果的數據,改爲從內存中讀取,減少數據庫訪問的次數,降低數據庫CPU的壓力,但會提高Web服務器的一些壓力,和增加少量的內存佔用量。

             應用場景主要針對一些基礎數據、組織結構數據等的訪問,E8.Net提供了實現這一方法的一個公共組件,包含全部源碼

             詳情:http://www.cnblogs.com/cancanwyq/archive/2008/02/14/1068605.html  

      2、頁面緩存、控件緩存的技巧

          對於所有用戶得到相同頁面結果的頁面來說,可以採用頁面緩存的方式,比如我們在首頁上展示公告信息的結果,這些結果對於所有用戶來說是一樣的,可以採用頁面緩存的方式,同時通過設置頁面緩存的失效機制保證所有用戶得到最新的結果,比如後臺代碼增加新的公告內容時可以設置一個Application的值,告訴頁面緩存失效。

           參考代碼如下:

          

ContractedBlock.gif頁面緩存失效範例

 

         主要技巧是通過 Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(Validate),null); 回調的技巧提供緩存判斷機制,在異步更改內容的時候設置了 Application["IsCacheValid"]的值,這樣達到一個即可以讀取緩存減少系統壓力 同時又能保證所有數據都是最新的內容。

         注意的是,雖然.NET提供了可以根據參數不同來緩存,但這樣對內存的佔用增加非常大,建議謹慎使用

 

      3、關閉不必要的ViewState

          在.net提交後臺處理時不需要的控件和數據 可以關閉ViewState這樣可以大大減少頁面的大小,提高網絡流量的數據,比如一個部門樹的控件,加載了一個大集團的組織結構的話,關閉ViewState後深圳可以將頁面大小變爲以前的1/10,讓用戶體驗更加流暢。

       

      4、智能的靜態頁面處理技巧

          一些已經處理完成的頁面展示的時候,系統已經不再有交互的動作,對於用戶來說,僅僅只是查看結果的情況下,可以智能的生成靜態頁面文件,只有一個用戶是通過.NET計算去獲得展示,其它用戶訪問的則是生成的靜態頁面,這樣也可以減少非常大數據量的.NET計算,提高性能。 比如E8.Net工作流平臺中展示流程結束後的結果就有客戶使用到了這些技巧,大大減少了服務器的壓力。

        詳情:http://www.cnblogs.com/cancanwyq/archive/2008/02/22/1077174.html 

      這樣做也有一些負面的影響,比如萬一還有後續的交互動作的話就無法處理了,同時也增加了硬盤的存儲壓力,加大了一些關鍵信息被流氓軟件收錄並從互聯網搜到的風險。

 

      5、靜態變量的方法

          如果僅僅只對於一個簡單變量來說,靜態變量的方法對於優化來說可以認爲是很微小的,但我們的應用程序中往往用到了各種設計模式,比如工廠模式,一些具體實現的對象是通過反射機制動態加載的。這個時候,我們用靜態變量的方法,再結合一些可系列化的存儲機制,可以使動態加載的動作只執行一次,這樣對性能的提升也是非常大的。

        詳情:http://www.cnblogs.com/cancanwyq/archive/2008/03/27/1124711.html 

   

     6、通過Cache機制緩存 配置信息 、系統參數

          一些配置文件 系統參數等內容可以通過 Cache緩存,這樣我們的系統不必要從數據庫中讀取,而是直接讀取內存,也可以大大提高應用程序的性能。

        詳情: http://www.cnblogs.com/cancanwyq/archive/2008/08/02/1258608.html 

 

      。。。。。。

 

     提高性能的技巧還有非常多,關鍵是我們要針對特定的場景採用特定的技巧。 程序寫得多了自然能找到更多更好的方法。

 

    C#語言 就像是音樂中的7個音符,要奏出美妙的音樂需要日積月累的經驗積累和刻苦的練習,及對代碼的感覺。希望本文能對大家有所啓發!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章