使用window.performance進行瀏覽器效能測試
效能測試,相信其重要性是不言而喻的,以往前端的效能測試是非常不方便的,非常幸運的是現在有了一個新的api:window.performance,並且現在很多瀏覽器都支援了這個藉口,這極大的降低了前端效能測試的難度。
一、理解瀏覽器的載入順序
從上圖就可以知道瀏覽器載入順序是如何的了,然後window.perference.timing就是提供了很多屬性讀取瀏覽器載入順序上各個點的時刻(非時間,用專業的物理概念),利用各個時刻的差值就可以得到我們想要的各載入段的時間。
不過,在chrome下,這裡有一個坑,按照W3C的標準,navigationStart應該是整個過程的開始,也就是時間點應該最早。但是chrome下很多時候不是這樣,會有domainLookupStart時間早於navigationStart的情況,初步認為應該是chrome的各種優化機制和預渲染功能打亂了上圖的順序。IE9相對守規矩一點。
window.perference.timing下的公開屬性有:navigationStar、unloadEventStart、unloadEventEnd、redirectStart、redirectEnd、fetchStart、domainLookupStart、domainLookupEnd、connectStart、connectEnd、secureConnectionStart、secureConnectionStart、responseStart、responseEnd、domLoading、domInteractive、domContentLoadedEventStart、domContentLoadedEventEnd、domComplete、loadEventStart、loadEventEnd。與瀏覽器的載入順序對於的點請對照上圖。
二、瀏覽器的支援情況
IE:IE9以上支援,介面為window.msPerformance;
Chrome:chrome6以上支援,chrome6-9為window.webkitPerformance,chrome10中是window.performance;
Firfox:firfox7.0以上支援,介面為:window.msPerformance;
Safari:支援,介面為window.performance;
移動端:支援,介面為window.webkitPerformance。
三、timing.js
timing.js是github上一個對window.perfermence很好封裝的一個開源js檔案。
github地址:https://github.com/addyosmani/timing.js