剛剛看到有人支持我寫的博客,表示仍是比較感動的,發現熱心的用戶在個人博客留言說「一個系統天天有200萬在線用戶,問我怎麼設計性能場景?」,其實這個問題呢就屬於業務沒理清,這個問題就像我問你,一個城市一天有一百萬人出行,請幫我找出交通壓力哪裏最大?這個問題一問你便知道無從下手了。javascript
好了,咱們接着來學習今天的內容,以前說了後端協議的知識,今天來講說前端的分析,在講述前端分析以前,你們能夠先去看一本書《高性能網址建設指南》,雖然書是十年前的,可是思想仍是能夠的,我在這先給你們列一下書裏面的主要思想。css
《高性能網址建設指南》書中有個關於前端優化的黃金原則:只有10%~20%最終用戶響應時間花在了下載HTML文檔上,其他80%~90%時間花在了下載頁面的全部組件上。並提出了14個對應的規則,接下來我簡單提一下這14個規則,詳細的能夠去找書看下。html
上面說了那麼多,我想要不舉個實例給你們看看吧,既然如今騰訊這麼有錢,咱們就去看看騰訊的網站吧,咱們用谷歌去訪問下www.qq.com看一下qq官網的性能如何。前端
咱們從這個點能夠看得出來,訪問qq首頁有215個請求,大小爲3.1M,總共耗時15.44秒,固然可能有個別不重要的請求拖慢了速度,咱們能夠看到大部分請求完成是在6秒左右,可是這也說明了qq的網站可能仍是存在一些前端性能問題的,咱們來具體看幾個請求,從上往下來看:java
第一個請求以下:從第一個請求來看,總共花了158.76ms,雖然不是很大可是這個是個什麼請求咱們不太清楚,由於我沒看到具體返回,有多是將用戶信息發送給服務端吧。linux
我先說下耗時的組成和具體含義:web
接着咱們看第二個主要的請求:能夠看到這個請求的返回是標準的html和內嵌了css和js,並未進行壓縮,並且也是混寫的,因此其實這個返回是能夠進行優化的。數據庫
接着咱們能夠去看,基本上一半的請求都是下載圖片,我想這麼圖片的請求是否是又能夠再進行優化呢(一個頁面200多個請求我的感受是不少的,由於每個請求就是一次交互過程,若是一臺服務器總的hps(hit per second)是固定的,請求數越少是否是就意味着能支持的併發數就會越多呢?尤爲是對騰訊大公司而言,假設首頁減小10個請求,100w的用戶的訪問,那麼就能夠減小總共1000w的請求呢,那麼這個是否是就意味着能夠減小上百臺甚至更多的服務器了呢?因此我感受qq的性能估計是服務器累出來的,但這個能省的錢是否是還能再省一點呢?好比請一個好一點的性能專家呢?哈哈哈,開個玩笑哈!)?我相信qq的首頁前端仍是有必定的優化空間的(當前訪問qq慢也有我的網速不是太好的緣由,不要太計較哈,嘻嘻)。後端
好了,咱們接着來學習吧,在性能測試的時候,我想最重要的應該仍是「分析思路」,猜想(根據監控和經驗(因此說要很廣的知識面))->測試->驗證->確認,這四個過程不斷循環,這就是性能的分析思路。緩存
這裏提一點,大部分性能問題來源於數據庫喔!
一直說性能須要很廣的知識面,這個是必然的,別人寫一個東西,若是你不清楚別人怎麼寫的並且知道怎麼寫才更好,又怎麼能幫助別人調優呢?因此具有開發、監控、網絡、數據庫、配置等能力都是必不可少的,固然還得有編寫報告和必定的邏輯思惟能力喔!
今天的最後咱們來講一下性能調優的一些思路:
前三天的課程咱們已經將性能的總體思路給你們理了下,接下來的幾天我會跟你們講解下性能的又一大難點--->性能監控,可能須要有必定的linux基礎,能夠提早學習下喔!