web性能優化——簡介

簡介

性能優化的第一準則:加緩存。幾乎絕大部分優化都圍繞這個來進行的。讓用戶最快的看到結果。css

性能優化的第二準則:最小原則。毫不提供多餘的信息。好比,靜態資源(圖片、css、js)壓縮,圖片的滾動加載,異步請求,http請求合併等。java

性能優化的第三準則:分佈、集羣。當前,這個的前提是已經把基本優化都作完了,才考慮這個方面。mysql

思路

性能優化的過程是一個鏈條,任何一個節點上都要優化,不然都會出問題,優化也就失敗了。linux

每一個節點上都包含這幾個方面nginx

  • 定位。定位這個節點是否有存在性能問題。
  • 監控。監控這個節點的性能問題。
  • 解決問題的辦法(文檔)。減小人爲解決問題的成本。

後面的文章也是根據流程,一個節點一個節點來組織web

性能類型

包括但不只限於下面的幾種類型。下面的這些,僅僅是基於咱們團隊使用的技術而言。若是有使用更多的技術能夠往裏面補充,好比說:cdn緩存加速等。算法

瀏覽器

瀏覽器是用戶接觸的第一道程序。每每在這裏的優化很直接、簡單,並且效果反而會很好。sql

  1. 資源靜態緩存
  2. 資源靜態按需加載

網絡

目前網絡仍是比較嚴重的性能瓶頸。商用的企業帶寬也比較貴,因此優化是很是有必要的。數據庫

  1. 合併請求
  2. 壓縮傳輸(gzip)
  3. 壓縮http的response內容

服務器

首先要確保每個軟件自己已是優化過的,並且對應的軟件的應用場景也是優化過。瀏覽器

  1. 操做系統(linux)
  2. 代理(nginx)
  3. web容器(tomcat)
  4. web應用(java)
  5. 數據庫(mysql)

架構

架構的統一解決,可讓開發在必定的程序減小對性能的考慮。

  1. 業務規劃。好比說:動靜分離,而且使用不一樣域名。
  2. 分佈。把重要的應用分佈部署,獨立提供服務。
  3. 集羣。集羣+負載均勻,是解決性能很直接的問題。可是最後放在全部的性能已是最佳的狀況下,再去考慮集羣。這樣會減小運維成本及資金成本。
  4. 緩存化。把熱點命中的內容,又使用很是頻率的使用緩存。要考慮使用的場景和命中率。
  5. 靜態化。把常年不變的內容,都走靜態化,是一個很是棒的想法。最好是作成對業務透明,無影響。

軟件研發

不少性能問題是在研發的過程當中產生的。

  1. 高性能的設計。好比:合理的數據庫字段冗餘。好比算法的複雜度。
  2. 高性能的規範。好比:不容許for裏有io等。
  3. 高性能的標準。每一個業務,要有一個標準,超過這個標準要要優化。不用每個都必須優化,這樣也影響開發效率。有目的的優化,8/2比例。用20%的時間,解決80%有性能問題。

框架

  1. 消息隊列。解決複雜場景,不須要用戶等待。若是解決實效性沒那麼強的業務。

語言(java)

對虛擬機的優化。

流程

熟悉流程及節點,才能定位性能的問題。並且優化的順序通常也是按請求的流程逐一優化。這裏的流程只是作個概要,並不表明全面。

整個流程是以最快的方式讓用戶看到結果

重複問題

若是有重複的問題,交給更高層節點(流程裏的前一個節點)去解決。好比說:若是能在代理級別作靜態和緩存,就不要在web容器裏去實現,更不要在web應用裏去實現。

文檔的統一結構

  1. 場景
  2. 解決方案
  3. 驗證方法

更高目標暢想

經過雲計算來實現這些功能。

相關文章
相關標籤/搜索