天天看點

web系統性能方案全面總結

全面列舉下web系統中前背景用到的各種性能提升方案: 尤其适合PHP系統

隻是列舉了下, 後續慢慢來分開寫吧, 很多東西我們已經用到了.

一. 伺服器端: 

資料庫層:

1. 資料庫性能優化:(設計方案,索引,查詢緩存,反範式化設計) 2. 使用NoSQL資料庫(mongoDB, 這個開源的很多) 

  邏輯處理層: 3. web壓力測試(吞吐率, ab或者siege工具) 4.  動态内容緩存(檔案緩存,APC緩存,擴充k/v緩存) 5. 靜态化動态内容 6. 分布式緩存(memcache, redis) 7. opcode編譯緩存(APC, xcache) 8. 浏覽器緩存(Expire header) 

  宿主環境層(web伺服器,Apache): 

  9. web伺服器緩存(mod_disk_cache, mod_file_cache:檔案描述符緩存) 10. 傳輸加速(apache:mod_deflate啟用, php自主gzip壓縮) 11. web元件分離 (均衡web負載, 最大化浏覽器多線程下載下傳) 12. xdebug瓶頸分析

二.前台: 

  1. Ajax 優化方案: 2. 減少http請求(多圖合一, 合并靜态元件, 圖檔延時加載) 3. 使用内容分發網絡(和web組建分離類似, 激發浏覽器并發, 分擔web伺服器負載) 4. 啟動浏覽器緩存(添加Expire頭資訊) 5. 壓縮靜态元件(等同伺服器壓縮傳輸) 6. 将css放在頁面頂部 7. 将js放在頁面底部 8. 避免css表達式 9. 外部引用js和css 10.減少DNS查詢(DNS緩存,TTL設定, Keep-alive, 使用更少的域名, 同域名内靜态檔案加載使用/代替域名) 11.簡化壓縮靜态js和css 12.避免重定向(這裡指靜态資源的擷取過程) 13.去除多餘的js 14.配置ETags 15.緩存ajax結果 16.DNS預取(<link rel="dns-prefetch" href="//預取域名" target="_blank" rel="external nofollow" >) 17.資源預取(内聯img标簽, <link rel="prefetch" href="圖檔位址" target="_blank" rel="external nofollow" >) 18.漸進的JPEG(導出jpeg圖檔時勾選對應選項)

三. 負載均衡: 1. web負載均衡(URL重定向, DNS解析, 代理伺服器)

2. 内容分發與同步(元件分離限制突破)

3. 分布式檔案系統

3. 資料庫負載均衡(讀寫分離,垂直分區,水準分區)

4. 分布式計算(Gearman)