前端 白屏時間如何獲取? - GetIt01
前端 白屏時間如何獲取?
02-01
有說在&
&前後打時間戳計算差值就可以的,但是如果head之間沒有其他資源如css,js等,這個差值會幾乎為0,然後你在chrome dev的timeline的Event log裡頭看到的firstPaint這個時間點根本不可能是0,,,所以問題來了,到底如何獲取白屏時間,所謂的first paint time......當然chrome有自己的api。。。window.chrome.loadTimes().firstPaintTime * 1000 - window.performance.timing.navigationStart 那其他瀏覽器怎麼弄?
謝邀。
關於 first paint time 為什麼沒有寫進標準的討論在此
First paint time · Issue #21 · w3c/navigation-timing · GitHub
但你可以用 raf 曲線救國嘛
&
&
&
&
&
&
&
&
&
&
在head裡面打個點,再在&
前setTimeout個0毫秒打個點.兩者差值接近是白屏時間.用這個做監控差不多吧.
秒錶。
注意手速要快。
(? ??ω??)??相信自己
-------------------分割線-----------------------------
當時用手機刷知乎,並不是太懂這個問題,匿名抖了個機靈,獲得一些贊(比我一些認真的回答還多)非常慚愧。
但是一直沒時間來細緻了解這個問題。想來點贊的各位,可能也是手機刷刷知乎,也沒時間細緻了解。
@魯小夫 大神答案里的鏈接,翻譯整理在這裡(有刪節並自己組織的語言),希望對那些沒精力看高票答案代碼的同志能有一些思路上的幫助。 本來想找更多的資料,但是限於能力精力,沒有實現。
First paint time · Issue #21 · w3c/navigation-timing · GitHub
問:為什麼沒把first paint time 寫進標準里呢?希望您能把他加進去。
答:因為不能準確定義它啊,這個時間標準是模糊的。比如一些網頁,他本來就是空白的啊,怎麼來定義這個paint的時間呢?而且很多人並不在乎,什麼時候畫出第一個像素,他們想跟蹤一下具體某個元素是什麼時候畫出來的。但是每個網站都不一樣,我們不可能來定義太細的介面。所以不能加。
Frame Timing 可以讓你跟蹤畫出來的時間,如果你真想追蹤first paint(白屏) time,你得等我們有一些 Houdini pieces (不知道怎麼翻譯,沒細看,求指正)才能有比較好的解決辦法。
問:那為什麼DevTools裡面有呢?為什麼不加個時間戳(從hidden到visible)? 我就是想知道,從點擊進去到看到內容,用戶等了多久,這個值是模糊的么?
答:在DevTools里有,並不是意味著他是一個好的標準。
如果想加時間戳來記錄,你自己加就行了唄。
我只是認為,first paint 不夠分量來寫進標準,frame Timing 應該更有意義。但是需要時間。
另外,關於時間標準的模糊,quora上有個回答,我也無從分辨,暫時放在這裡:
What does First Meaningful Paint mean in Web Performance?
所以我抖的機靈,且不論能否測1k次的平均時間,它需要根據視覺判斷,是完全不對的。
通過Navigation Timing API 可以獲取首屏時間
使用方法:
控制台中
performance.timing.responseStart - performance.timing.navigationStart
具體解釋可以參考:
3fuyu
Google 搜搜 didFinishLoad ,差不多就是這個事件(iOS)發生的時候。
推薦閱讀:
※Python高效代碼實踐:性能、內存和可用性(譯)
※六年打怪升級,一路披荊斬棘,只為沒有難用的Node.js
TAG:前端開發 | 性能 |