簡介 性能優化的第一准則: 。幾乎絕大部分優化都圍繞這個來進行的。讓用戶最快的看到結果。 性能優化的第二準則: 。絕不提供多餘的信息。比如,靜態資源(圖片、css、js)壓縮,圖片的滾動載入,非同步請求,http請求合併等。 性能優化的第三準則: 。當前,這個的前提是已經把基本優化都做完了,才考慮這個 ...
簡介
性能優化的第一准則:加緩存
。幾乎絕大部分優化都圍繞這個來進行的。讓用戶最快的看到結果。
性能優化的第二準則:最小原則
。絕不提供多餘的信息。比如,靜態資源(圖片、css、js)壓縮,圖片的滾動載入,非同步請求,http請求合併等。
性能優化的第三準則:分佈、集群
。當前,這個的前提是已經把基本優化都做完了,才考慮這個方面。
思路
性能優化的過程是一個鏈條,任何一個節點上都要優化,否則都會出問題,優化也就失敗了。
每個節點上都包含這幾個方面
- 定位。定位這個節點是否有存在性能問題。
- 監控。監控這個節點的性能問題。
- 解決問題的辦法(文檔)。減少人為解決問題的成本。
後面的文章也是根據流程,一個節點一個節點來組織
性能類型
包括但不僅限於下麵的幾種類型。下麵的這些,僅僅是基於我們團隊使用的技術而言。如果有使用更多的技術可以往裡面補充,比如說:cdn緩存加速等。
瀏覽器
瀏覽器是用戶接觸的第一道程式。往往在這裡的優化很直接、簡單,而且效果反而會很好。
- 資源靜態緩存
- 資源靜態按需載入
網路
目前網路還是比較嚴重的性能瓶頸。商用的企業帶寬也比較貴,所以優化是非常有必要的。
- 合併請求
- 壓縮傳輸(gzip)
- 壓縮http的response內容
伺服器
首先要確保每一個軟體本身已經是優化過的,而且對應的軟體的應用場景也是優化過。
- 操作系統(linux)
- 代理(nginx)
- web容器(tomcat)
- web應用(java)
- 資料庫(mysql)
架構
架構的統一解決,可以讓開發在一定的程式減少對性能的考慮。
- 業務規劃。比如說:動靜分離,並且使用不同功能變數名稱。
- 分佈。把重要的應用分佈部署,獨立提供服務。
- 集群。集群+負載均勻,是解決性能很直接的問題。但是最後放在所有的性能已經是最佳的情況下,再去考慮集群。這樣會減少運維成本及資金成本。
- 緩存化。把熱點命中的內容,又使用非常頻率的使用緩存。要考慮使用的場景和命中率。
- 靜態化。把常年不變的內容,都走靜態化,是一個非常棒的想法。最好是做成對業務透明,無影響。
軟體研發
很多性能問題是在研發的過程中產生的。
- 高性能的設計。比如:合理的資料庫欄位冗餘。比如演算法的複雜度。
- 高性能的規範。比如:不允許for里有io等。
- 高性能的標準。每個業務,要有一個標準,超過這個標準要要優化。不用每一個都必須優化,這樣也影響開發效率。有目的的優化,8/2比例。用20%的時間,解決80%有性能問題。
框架
- 消息隊列。解決複雜場景,不需要用戶等待。如果解決實效性沒那麼強的業務。
語言(java)
對虛擬機的優化。
流程
熟悉流程及節點,才能定位性能的問題。而且優化的順序一般也是按請求的流程逐一優化。這裡的流程只是做個概要,並不代表全面。
整個流程是以最快的方式讓用戶看到結果
重覆問題
如果有重覆的問題,交給更高層節點(流程里的前一個節點)去解決。比如說:如果能在代理級別做靜態和緩存,就不要在web容器里去實現,更不要在web應用里去實現。
文檔的統一結構
- 場景
- 解決方案
- 驗證方法
更高目標暢想
通過雲計算來實現這些功能。