首先明確,首屏和白屏的時間計算,沒有明確的API可以得到。
白屏 = 開始顯示body的時間 - 開始請求的時間
首屏 = 首屏內容渲染結束的時間 - 開始請求的時間
具體計算方法如下:
1. 白屏
支持performance api,開始請求的時間 performance.timing.navigationStart
<html> <head> <title>白屏時間</title> <link href="xxxxx"/> <script>var endTime = new Date() </script> </head> <body> </body> </html>
白屏 = endTime - performance.timing.navigationStart
不支持performance api,只能采用打點的方式,在dom中插入 <script> startTime = Date.now(); </script>
<html> <head> <script> var startTime = new Date() </script> <title>白屏時間</title> <link href="xxxxx"/> <link href="xxxxx"/> <script> var endTime = new Date() </script> </head> <body></body> </html>
白屏 = endTime - startTime
2. 首屏
首屏是指,在不滾動屏幕前提下,第一屏頁面顯示完成花費的時間。頁面內容顯示完成,才算首屏時間,部分未顯示,不算。首屏時間一般在5秒內,算優秀,在10秒內可接受,超過10秒,無法忍受。
首屏渲染結束這個時間,無法確切的計算。一般可以在幾個近似的地方打點:
1. 首屏dom和第二屏dom之間 打點 不同屏幕尺寸,有差異,模糊計算
2. 首屏圖片中最慢的加載完成 打點 監聽所有首屏的圖片,在onload事件中,記錄時間最大值
3. 在domReady或onload中 打點