掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
工欲善其事,必先利其器。了解完性能指標(biāo)之后,性能優(yōu)化的目標(biāo)已經(jīng)明確了。接下來我們借助一些性能測量工具,明確網(wǎng)頁距離優(yōu)化目標(biāo)之前還有多大的差距。一個好的工具可以讓你事半功倍,接下來我將用3篇文章分別介紹3個主流的測量工具:

Chrome DevTools Performance 主要用于日常開發(fā)過程中分析運行時的性能表現(xiàn)。
Lighthouse 用來生成網(wǎng)頁的性能評測報告。
WebPageTest 用來進(jìn)行整體的網(wǎng)站質(zhì)量評估、一站式性能評估。
有了這3個工具我們就可以從多個維度對網(wǎng)站性能進(jìn)行全方位的評估。
WebPagetest的核心是用于測量和分析網(wǎng)頁的性能。它是 google 開源項目《make the web faster》的子項目,它本來是 AOL 內(nèi)部使用的工具,后來在2008年基于BSD開源。
官方網(wǎng)址:http://www.webpagetest.org/
WebPageTest是一個PHP網(wǎng)站,用戶輸入網(wǎng)址、地點、自定義腳本等信息后,參數(shù)發(fā)送到后臺。后臺做些邏輯處理,再通過瀏覽器相關(guān)的代理程序,啟動Chrome、Firefox或IE。瀏覽器執(zhí)行完后將數(shù)據(jù)傳回給后臺,后臺再將數(shù)據(jù)保存起來,最后通過各種形式(圖、表格、列等),將分析數(shù)據(jù)過的數(shù)據(jù),呈現(xiàn)給用戶。
首先打開WebPageTest 官網(wǎng),可以看到如下界面:
基礎(chǔ)配置
高級配置
官網(wǎng)中只能測試一些外網(wǎng)能訪問的網(wǎng)站,但是往往開發(fā)過程中有些項目我們都發(fā)布在公司內(nèi)部的局域網(wǎng)內(nèi),所以就需要將WebPagetest部署到本地,使用本地的網(wǎng)絡(luò)環(huán)境來測試性能。
注意:這里提到的本地部署,是指本地局域網(wǎng)內(nèi)服務(wù)器上部署的網(wǎng)站,不是本地電腦的locallhost,因為在本地測試locallhost往往是不準(zhǔn)確的,因為大多數(shù)情況下,本地開發(fā)調(diào)試的頁面都是webpack dev sever服務(wù)器,資源沒有經(jīng)過壓縮,所以加載速度也會很慢,和線上環(huán)境的結(jié)果往往會大相徑庭。
具體步驟如下:
1.下載并安裝docker鏡像,下載地址 https://docs.docker.com/get-docker/
為什么安裝docker鏡像?docker類似于一個虛擬機,在虛擬機上下載WebPageTest的鏡像,我們就是不需要獨立安裝WebPageTest這個軟件了,這樣可以不受系統(tǒng)限制,完全獨立出一套虛擬的環(huán)境,通過端口映射到本地服務(wù)。
2.拉取鏡像
- docker pull webpagetest
- docker pull webpagetest/agent
3.運行server實例
- docker run -d -p 4000:80 webpagetest/server
4.運行agent實例
- docker run -d -p 4000:80 --network="host" -e "SERVER_URL=http://localhost:4000/work/" -e "LOCATION=Test" webpagetest/agent
5.訪問http://localhost:4000,會看到 WebPagetest 官網(wǎng)一樣的頁面,在這個頁面中輸入本地其它端口的網(wǎng)址,我們就可以測試本地服務(wù)的性能了。
1. 優(yōu)化等級
在結(jié)果頁面的頂部是一組最關(guān)鍵的性能優(yōu)化等級。涵蓋了適用于所有網(wǎng)站的基本優(yōu)化,任何不是A或B的都需要進(jìn)行進(jìn)一步的優(yōu)化.
2. 性能指標(biāo)總結(jié)
結(jié)果頁頂部的數(shù)據(jù)表提供了有關(guān)已加載頁面的一些高級信息,其中首次和重復(fù)訪問視圖的指標(biāo)都有清晰的看到首次和重復(fù)視圖訪問的結(jié)果。
首次視圖(First View):首次視圖的測試,將會把瀏覽器的緩存和Cookie清除,表示訪問者第一次訪問該網(wǎng)頁將體驗到的情況。
重復(fù)視圖(Repeat View):重復(fù)視圖會在首次視圖測試后立即執(zhí)行,不會清除任何內(nèi)容。瀏覽器窗口在First View測試后關(guān)閉,然后啟動新瀏覽器以執(zhí)行Repeat View測試。重復(fù)視圖測試模擬的是用戶離開頁面后,馬上再進(jìn)入此頁面的場景。
除此之外,這里介紹幾個關(guān)鍵指標(biāo):
首字節(jié)加載時間(First Byte Time):是指瀏覽器收到HTML內(nèi)容的第一個字節(jié)時間,包括DNS查找、TCP連接、SSL協(xié)商(如果是HTTPS請求)和TTFB。
首字節(jié)時間 TTFB(Time To First Byte):首字節(jié)是指被測量為從初始化請求,到服務(wù)器響應(yīng)的第一個字節(jié),被瀏覽器接收的時間(不包括DNS查詢、TCP連接的時間)。我理解TTFB的計算是從下圖中requestStart到responseStart這之間的時間,也就是請求發(fā)送出去的時間。
所以,首字節(jié)加載時間 = DNS查找時間+TCP連接時間+SSL協(xié)商時間+TTFB請求發(fā)送出去的時間
3. waterfall chart 請求瀑布圖
在結(jié)果頁的下方我們可以看到每次運行顯示的瀑布圖,點擊進(jìn)去可以看到具體的參數(shù)詳情,如下圖所示:
在這張圖上我們可以看到所有的請求資源都列舉了出來,里面的信息比 Chrome DevTools給出的信息更加詳細(xì),例如下方的幾個指標(biāo):
除此之外,在下圖中我們還可以看到一些優(yōu)化的點,比如42-50這些并行請求的圖片資源減少了資源加載時間,還有57-58黃色高亮部分資源發(fā)生了重定向,WebpageTest 提示我們這里資源發(fā)生了變化,可以優(yōu)化為不進(jìn)行資源重定向。

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流