開發網站性能分析及優化

從程序角度分析網站,都是我的拙見,記錄看看。前端

一、網站打開體驗,速度慢的優化方案:
  @ 優化方案
    前端架構優化;調整瀏覽器緩存、併發、異步特性;使用CDN服務;反向代理等;等。
  @ 後端方案
    緩存數據加速數據獲取;使用集羣改善請求吞吐量;請求使用異步消息隊列加快相應;代碼優化;等。
  @ 運維方案 
    網絡運營商的帶寬能力及穩定性;服務器硬件的配置;數據中心的網絡架構;虛擬化技術優化資源利用;等。算法

二、網站的性能分析要從這幾個點分析:
  @ 響應時間
    執行一個操做的時間,包括從發出請求開始到收到最後響應數據所須要的時間。
  @ 併發數
    指系統可以同時處理請求的數目,即網站的併發用戶數,指同時提交請求的用戶數目。
  @ 吞吐量
    指單位時間內系統處理完的請求數量,體現系統的總體處理能力。
  @ 性能計數器
    描述服務器或操做系統性能的數據指標。包括對象與線程數、內存使用、CPU使用、磁盤與網絡I/O等指標。
  實際開發中,可依據以上幾個點的測試結果針對性的對網站進行優化方案。數據庫

三、Web前端性能優化
  @ 瀏覽器訪問優化方案
    * 減小HTTP請求:合併CSS,合併圖片,合併JavaScript 等手段減小瀏覽器對網站的請求次數。
    * 使用瀏覽器緩存:對於靜態文件資源,更新率比較低的資源能夠緩存到瀏覽器中,用來減小請求次數。
    * 使用壓縮:服務器端對文件進行壓縮,瀏覽器端對文件解壓縮,以此減小通訊傳輸的數據量。
               對HTML、CSS、JavaScript文件啓用GZip壓縮能夠達到很好的效果。
    * CSS放頁面最上面,JavaScript放在頁面最下面:依據兩種文件執行的時間原理分析便可。
    * 儘可能減小cookie的傳輸,太大的cookie會嚴重影響數據傳輸。
  @ CDN方案
    * 內容分發網絡:CDN可以緩存的通常是靜態資源,如圖片、文件、CSS、JavaScript腳本、靜態網頁等,並且這些文件訪問頻率很高,
                  將其緩存在CDN可極大改善網站的打開速度。
  @ 反向代理
    * 代理服務器:合理有效的分配資源到相應的服務器,實現負載均衡的效果。
      此外反向代理服務器也能夠將靜態資源緩存起來,當請求網站時,第一時間將資源返回相應客戶端。後端

四、應用服務器性能優化
   網站的業務代碼都部署在這裏,也是網站變化最多的,開發最複雜的地方。
  @ 分佈式緩存
    * 網站性能優化第必定律:優先使用緩存優化性能 
      緩存主要用來存放那些讀寫比很高、不多變化的數據,讀數據優先在緩存中獲取,失效的狀態再去訪問數據庫。
      依據二八定律,即80%的訪問落在20%的數據上,便可將這20%的數據緩存起來,以此改善數據訪問的響應時間。
    * 合理使用緩存須要考慮的問題
      不要頻繁修改數據;
      對於不遵循二八定律的數據沒有必要使用;
      對數據不一致的問題預設解決方案;
    * 防範緩存穿透
      將不存在的值也緩存起來,將其值設置NULL,防止惡意訪問數據庫爲目的的操做;
    * 分佈式緩存架構
      這裏不細講你們應該也知道原理,簡單介紹三種。 
        # JBoss Cache:須要更新同步,代價大,多用於企業,中等數據量;
        # Memcached(互不通訊)、Redis(互不通訊),Redis是我本身加上的感受也是能夠這樣使用的,多臺架構時,緩存的邏輯可添加到應用程序中,
          記錄對應一個算法結果將數據存放到不一樣的緩存服務器中,取得時候經算法後去對應的緩存中獲取結果;
          
  @ 集羣
    多臺服務器分佈,配合負載均衡使用。
    
  @ 異步
    使用消息隊列,將調用異步化,進而改善性能。
    注意:異步化以後,要針對業務流程進行分析,不須要異步的業務須要進行應對方案,以防產生很差的體驗或糾紛問題。
  
  @ 代碼優化
    合理的優化業務代碼,能夠很好的改善網站的性能
    這裏相對要注意的幾個問題:
    * 多線程 
      多線程併發對某個資源修改操做,會致使數據錯亂。
    * 資源複用
      儘可能減小開銷大的資源建立/銷燬,好比數據庫鏈接、線程、複雜對象等。
      能夠適當使用單例模式和對象池。
    * 合理的使用數據結構 改善數據讀寫和計算特性 進而優化程序的性能。
    * 垃圾回收機制瀏覽器

五、存儲服務器性能優化
  @ 固態硬盤 > 機械硬盤
  @ 存儲服務 在數據方面的優化,詳細可查看數據庫優化方面的文章。緩存


在以上的優化方案中,涉及集羣方面的方案,分佈式能夠改善網站併發特性,可是也會帶來通訊延遲的問題,設計架構的同時內心有數,合理調整該方案的預期。
 性能優化

相關文章
相關標籤/搜索