我們知道
不同的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的值,告訴頁面緩存失效。
參考代碼如下:
主要技巧是通過 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個音符,要奏出美妙的音樂需要日積月累的經驗積累和刻苦的練習,及對代碼的感覺。希望本文能對大家有所啓發!