1. 程式人生 > >使用window.performance進行瀏覽器效能測試

使用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