高性能開發規範
阿新 • • 發佈:2018-09-27
大小 net 不必要 utc 引用 定向 數據庫設計 表達 環境 常用性能優化手段
- 減少請求數量
- 靜態文件采用HTTP緩存,避免反復請求
- 合並請求:小圖片,小JS,小CSS,多次AJAX,CSS內聯圖片
- 靜態內容分離:
- 少量變化的頁面,可采用靜態頁(緩存頁)+ AJAX方式實現
- 合理使用緩存
- HTTP緩存:Response.Cache
- 頁面緩存:OutputCache指令
- 數據&中間結果緩存:局部變量,靜態變量,ASP.NET Cache,memcache
- 控制響應長度
- 分頁&按需加載:限制數據庫查詢結果大小,樹控件按層級加載
- 控制Cookie長度:Cookie會隨每次請求發送,會占用上傳時間。
- 合理利用304:如果請求結果沒有變化,建議使用304響應
- 壓縮結果:利用瀏覽器支持的解壓縮功能將結果壓縮返回。
- 利用索引避免表掃描
- 針對經常需要篩選的字段,創建必要的索引(參考數據庫設計規範)
- WHERE過濾條件要符合SARG原則(參考數據庫設計規範)
- 如果使用查詢庫,在表名後增加 with(nolock) 選項
- 從字典取值,必須使用 TryGetValue 方法。
- 字符串轉數字,必須使用 TryParse 方法,例如:int.TryParse
- 多次操作數據庫時,要共用連接,避免反復打開連接,尤其是在循環中操作數據庫。
- 盡量給各種集合指定初始容量,避免運行時動態調整容量。
- 禁止使用 ViewState,Session
- 避免創建不必要的對象
- 多用局部變量緩存中間結果。例如下面這個錯誤的寫法會讓執行二次集合查找:
- 少用弱類型的設計,盡量使用泛型類型避免裝箱拆箱。
- 用StringBuilder完成字符串的拼接操作(不要直接拼接)。
前端相關的性能優化&開發技巧
- 減少請求數據(合並請求,資源文件緩存)
- CSS的引入放在頁頭,JS的引用放在頁尾。
- JavaScript,CSS盡量采用外部文件來保存,便於緩存請求。
- 避免一次加載大量數據,應該采用分頁分層方式加載數據(樹,網格)。
- 確保引用的資源文件都是存在的,避免產生404錯誤。
- 不要依賴於目錄的默認文件名,應該在URL中寫出全路徑,避免無謂的重定向。
- 避免反復查找DOM元素,或者執行重復計算,應該多用變量保存計算結果(或者DOM對象)
- 避免使用CSS表達式
- 塊元素以及圖片應該盡量指定高度,減少頁面重繪。
- 圖片格式優先使用PNG擴展名,建議使用Photoshop優化圖片大小。
- 在負載均衡環境中,靜態變量之類的內存數據不能在多臺機器之間共享。因此,只適合存放臨時緩存或者能保證多臺服務器一致的數據。
- 給數據表增加索引時,應該檢查是否存在冗余索引。
高性能開發規範