如下圖所示,是精選平台開啟 h5 頁面的幾個過程截圖。
1)載入網路請求
這個過程主要是 webview 拿到 h5 頁面 url 之後,呼叫 loadurl 方法,開始去網路上請求第乙個資源檔案。這個階段主要包含 dns 解析、建立網路鏈結、資料傳輸的耗時。
2)html 解析
webview 拿到 html 返回後,需要從上至下解析 html 中的標籤和內容,識別外鏈資源、計算頁面框架的布局,並渲染繪製出來。在這個過程中會構建出負責頁面結構的 dom tree 和負責頁面布局展示的 render tree,如下圖所示:
3)外鏈資源載入
這部分主要是從網路上載入外鏈的 css、和 js 等,再重新填充到 html 中。之後重新進行一次 layout 布局計算和頁面渲染繪製,此時看到的才是有完整內容的頁面。如下圖所示,頁面需要等和 css 載入出來後才能展示,js 也是外鏈資源,不過一般來說,只要放在 html 底部載入,就不會阻塞頁面的渲染和展示。
前面我們已經了解了 h5 頁面載入過程,接下來如果遇到白屏,我們自然會問,怎麼才能知道頁面當前處在哪個階段,每個階段耗時多長,以及整體首屏載入的耗時呢?
首先看下通過 pc chrome 模擬 h5 頁面的情況。chrome devtool 提供的 performance 工具,可以錄製頁面從第乙個請求到載入完成的所有事件,通過這種方式可以很詳細的看到各階段做的事情和具體的耗時。
其中兩個最關鍵的首屏耗時指標:domcontentloaded(首屏頁面可見)和onload(首屏載入完成)的耗時,除了圖示的方法,還可以通過在 console 裡列印全域性變數window.performance.timing,拿到時間戳並計算得到。
但實際我們要的是移動裝置的真機資料,這個才能真實反應頁面效能和使用者體驗。想要獲取 h5 真機耗時,一種方式是 js **進行上報;另一種是對於 android 裝置,可以用 remote-debug 的方式遠端除錯真機頁面。只需要保證 webview 除錯開關開啟 & 與 pc usb 連線且開啟 usb 除錯,就可以在 pc chrome 訪問 chrome://inspect 來獲取除錯物件。之後參考 pc chrome 模擬 h5 的方法即可拿到資料。
對於傳統頁面而言,實際分析發現大部分耗時還是在流動網路請求這部分,所以最直接有效的方式就是對頁面進行直出改造,也就是改變先載入 html、再載入 css 等資料的情況,先在後端(比如 nodejs)並行載入首屏依賴的所有 css、js 和後台介面資料,拼裝好乙個完成的最終要呈現的 html 再回給前端,達到秒開的效果。
有時候使用者在頁面互動的過程中會遇到卡慢,比如上下滑動列表、左右切換或者輪播等。這個過程無非也是執行 js、請求資源、計算新的頁面布局並渲染繪製這幾件事。通過 performance 分析就會發現,卡慢其實並不全是很多人認為的「移送裝置效能就是差」,有時候其實是假性卡頓。
比如下面這個就是熱區過小的問題:
真卡的情況,往往腳本報錯佔了很大比重,直觀表現就是頁面是卡死,而不是變慢。其他的諸如記憶體問題,通常表現是頁面越來越卡,因為使用時間越長,資源消耗越大。比如頁面使用了比較複雜的 canvas 動畫、比較耗效能的 iframe 元素,或者直播流**,這種情況下容易出現記憶體洩漏。
下面這個就是 dom 節點引發的記憶體洩漏,不使用的 commentlist 列表沒有釋放,越積越多到長度幾萬個的時候開始卡頓。
當然,前端效能不僅僅表現在白屏、卡頓問題,也有可能是手機過度發熱等等。從使用者核心體驗出發,我們認為,h5 前端效能最重要的參考標準就是:要以最輕量的方式,給使用者最好的體驗。從這個方向出發,我們積累了一些測試經驗,其中最重要的必過項是首屏速度(不僅提公升使用者體驗,還可以提公升業務的轉化率),其次流暢度、流量和 cpu 等,某些場景下也是需要重點考量的點。
H5 前端效能測試實踐
如下圖所示,是精選平台開啟 h5 頁面的幾個過程截圖。1 載入網路請求 這個過程主要是 webview 拿到 h5 頁面 url 之後,呼叫 loadurl 方法,開始去網路上請求第乙個資源檔案。這個階段主要包含 dns 解析 建立網路鏈結 資料傳輸的耗時。2 html 解析 webview 拿到 ...
H5前端效能關鍵指標
http相關 有統計證明 乙個網頁最終到達終端使用者有80 的時間都是在js,css,flash等資源的http請求。另一方面,http請求的數量也是有限制的,瀏覽器對同乙個網域名稱有連線數限制,不同瀏覽器核心 不同版本的請求數不盡相同,大部分的併發請求數是6個。看來通過夠控制http請求的數量,減...
H5測試要點
1 h5是什麼?可以理解為乙個網頁 h5來自 html5 是一種高階的網頁技術,包括html css和j ascript在內的一套技術組合 參考部落格文章 如何識別h5?html是 超文字標記語言 是一門描述頁面的標準語言 1 h5 開發快,實現的功能也很炫 只編寫一次,可以再多個裝置上到處執行 具...