1. 程式人生 > >高性能開發規範

高性能開發規範

大小 net 不必要 utc 引用 定向 數據庫設計 表達 環境

常用性能優化手段
  1. 減少請求數量
    • 靜態文件采用HTTP緩存,避免反復請求
    • 合並請求:小圖片,小JS,小CSS,多次AJAX,CSS內聯圖片
  1. 靜態內容分離:
    • 少量變化的頁面,可采用靜態頁(緩存頁)+ AJAX方式實現
  1. 合理使用緩存
    • HTTP緩存:Response.Cache
    • 頁面緩存:OutputCache指令
    • 數據&中間結果緩存:局部變量,靜態變量,ASP.NET Cache,memcache
  1. 控制響應長度
    • 分頁&按需加載:限制數據庫查詢結果大小,樹控件按層級加載
    • 控制Cookie長度:Cookie會隨每次請求發送,會占用上傳時間。
    • 合理利用304:如果請求結果沒有變化,建議使用304響應
    • 壓縮結果:利用瀏覽器支持的解壓縮功能將結果壓縮返回。
  1. 利用索引避免表掃描
    • 針對經常需要篩選的字段,創建必要的索引(參考數據庫設計規範)
    • WHERE過濾條件要符合SARG原則(參考數據庫設計規範)
    • 如果使用查詢庫,在表名後增加 with(nolock) 選項
.NET代碼相關的性能優化&開發技巧
  1. 從字典取值,必須使用 TryGetValue 方法。
  2. 字符串轉數字,必須使用 TryParse 方法,例如:int.TryParse
  3. 多次操作數據庫時,要共用連接,避免反復打開連接,尤其是在循環中操作數據庫。
  4. 盡量給各種集合指定初始容量,避免運行時動態調整容量。
    List<int> list1 = newList<int>(30);
  1. 禁止使用 ViewState,Session
  2. 避免創建不必要的對象
    List<int> list = newList<int>(); // 這個對象完全沒有必要創建     list = GetList( /* ... */ );
  1. 多用局部變量緩存中間結果。例如下面這個錯誤的寫法會讓執行二次集合查找:
    if( context.Request.QueryString["k1"] !="" ) {     int a = int.Parse(context.Request.QueryString["k1"]);
  1. 少用弱類型的設計,盡量使用泛型類型避免裝箱拆箱。
  2. 用StringBuilder完成字符串的拼接操作(不要直接拼接)。

前端相關的性能優化&開發技巧

  1. 減少請求數據(合並請求,資源文件緩存)
  2. CSS的引入放在頁頭,JS的引用放在頁尾。
  3. JavaScript,CSS盡量采用外部文件來保存,便於緩存請求。
  4. 避免一次加載大量數據,應該采用分頁分層方式加載數據(樹,網格)。
  5. 確保引用的資源文件都是存在的,避免產生404錯誤。
  6. 不要依賴於目錄的默認文件名,應該在URL中寫出全路徑,避免無謂的重定向。
  7. 避免反復查找DOM元素,或者執行重復計算,應該多用變量保存計算結果(或者DOM對象)
  8. 避免使用CSS表達式
  9. 塊元素以及圖片應該盡量指定高度,減少頁面重繪。
  10. 圖片格式優先使用PNG擴展名,建議使用Photoshop優化圖片大小。
註意事項
  1. 在負載均衡環境中,靜態變量之類的內存數據不能在多臺機器之間共享。因此,只適合存放臨時緩存或者能保證多臺服務器一致的數據。
  2. 給數據表增加索引時,應該檢查是否存在冗余索引。

高性能開發規範