轉:web效能開發隨筆

來源:互聯網
上載者:User

目標:
開發高效能,可擴充的WEB應用。

1.WEB應用的分層
 a.前端
 b.後端

a.前端最佳化的重要性。分析工具GA和YSLOW
 1.一個request之前要做的最佳化。
 2.不要緊盯WEB後端最佳化。儘可能的訪問伺服器之前,消滅掉request.

  前端最佳化的方法
 1.減少http請求。
   方法:合并圖片:使用CSS或者HTML的MAP標籤來定位。
         合并指令碼和樣式表:視情況而定。同一功能的耦合在一個指令碼發布。如果是landing page和index頁可以考慮使用內聯腳           本和CSS的方法
 2.緩衝圖片和指令碼.
   方法:再web伺服器設定Expires頭。據統計大概60%以上使用者帶有完整緩衝。要做的就是發布JS,CSS之類的指令碼要帶有版本號碼。         應對及時更新。

 3.壓縮一些組件。
   方法:壓縮的是XML,JSON。不要壓縮圖片。圖片應該由本身格式來壓縮最佳化如PNG,GIF,JPG。APACHE1.x和2.x配置不同。

 4.樣式表的位置。
   方法:儘可能的放在頂部。LINK要放到HEAD之中,不要使用@import.可能還會最後下載。

 5.js指令碼放在底部
   方法:儘可能的放在底部。視情況而定,有些js控制顯示的要放在上面了。增加並行下載的能力。視CPU和頻寬來決定。

 6.使用外部的CSS和JS
   方法:方便緩衝。合并壓縮CSS.工具有JSMIN和YUI COMPRESSOR。首頁和著陸頁使用內聯較好。

  前端技術推薦:CSS架構 960GRID網格展示和JS架構JQUERY。(瀏覽器安全色性佳)。
  
  
b.後端最佳化。(Java)
  本質:web伺服器的叢集-》分布式緩衝-》資料庫叢集。
  1.WEB伺服器叢集:
    選擇:nginx,apache,lighttpd 執行緒模式。
    apache:穩定。多進程開銷大,並發處理能力低。相對安全。子進程崩潰不影響其他的進程。並發數100左右可以考慮。
    高效能推薦:nginx.普及門戶高穩定性 介於apache和lighttpd之間。CPU記憶體佔用非常之低。高並發APACHE線程過多導致死掉,只能重啟。。lighttpd圖片伺服器。
    使用方式:
           nginx:163,renren,douban,sina,qq 版本各異。。。
           lighttpd:未知。flickr圖片伺服器。早期豆瓣。
           apache:很多了。
    負載平衡:DNS.HAPROXY 4層負載。
  
  2.分布式緩衝
    沒什麼疑問了 當下最流行memcached.用戶端分布式。設計緩衝一定要注意的是緩衝是不可靠的。命中率的問題。緩衝的擴充為key的md5(十六進位字串)加密。截取前5位轉    十進位,然後取餘數。% 值就是伺服器編號。

  3.資料庫(MySQL)
    最終思想為讀寫分離。選擇合適的儲存引擎(MyISAM,INNODB)。索引的最佳化。
    儲存引擎:
    選擇合適的儲存引擎需要如下考慮:1事物。2.並發。
    1.事務,如果支援事務的話,不用考慮了直接使用innodb.
    2.並發,多查詢少寫入。最好為MyISAM.多寫入多查詢那種。適合Innodb。因為Innodb本身是行鎖。批次更新。多查詢還是MyISAM。
    對經常查詢的資料庫加上緩衝設定。線程池的最佳化。

    索引:
    1.多查詢的表 要加索引。同樣的索引帶來的副作用就是插入更新的緩慢。再就是佔用硬碟空間。
    2.要注意索引的順序。比如 firstname加索引 lastname沒有加。如果 lastname在firstname之前索引就失效。
    3.要把列單獨隔離,不要對列進行操作。如where DATE_FOMAT(reportdate)=?
   
    又出現一個問題。如何避免JOIN查詢。
    非範式化。KEY-VALUE.資料庫。最近研究couchdb apache ab -n1000 -c200 request/s 2590.無最佳化。優點JSON。直接返回JSON。
    MySQL方案。。預存程序+shell
 
    其他選擇memcachedb.(memcached協議+伯克利DB),MongoDB。是對關係型資料庫的一個彌補。

    主從複製+MySQL Proxy 。或者 水平資料分割。userid%10 垂直資料分割 。不相關的分庫。。Spock Proxy。HiveDB

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.