performance是html5的新特性之一,經過它,頁面的開發者們能夠很是精確的統計到本身頁面的表現狀況,從而有針對性的進行優化,提高用戶體驗。javascript
下面是小姐姐對performance相關API的學習總結,一塊兒上車吧~css
返回一個PerformanceTiming
對象,用來獲取完整的頁面加載信息。html
是時候祭出這張圖了:html5
咱們會比較關注的幾個時間段及其耗時的計算方法以下:java
timing.domainLookupEnd - timing.domainLookupStart
timing.connectEnd - timing.connectStart
timing.responseStart - timing.requestStart
timing.responseEnd - timing.responseStart
timing.domInteractive - timing.domLoading
timing.domContentLoadedEventStart - timing.domInteractive
timing.domContentLoadedEventEnd - timing.domContentLoadedEventStart
timing.domComplete - timing.domContentLoadedEventEnd
timing.loadEventEnd - timing.loadEventStart
返回一個DOMHighResTimeStamp
對象,獲取從timing.navigationStart
開始到調用該方法的時間,精確到千分之五毫秒(5微秒)。瀏覽器
下面是該方法的使用場景之一:經過計算代碼塊的起始位置以及結束位置performance.now()
的差值,來獲取一個比較精確的代碼執行時間。緩存
看代碼:dom
var startTime, endTime; startTime = window.performance.now(); doSomething(); endTime = window.performance.now(); console.log(endTime - startTime);
performance
提供若干API容許咱們對頁面中加載的資源進行性能分析。性能
performance.getEntries學習
獲取一組當前頁面已經加載的資源PerformanceEntry
對象。接收一個可選的參數options進行過濾,options支持的屬性有name
,entryType
,initiatorType
。
var entries = window.performance.getEntries();
返回值以下圖所示:
name
,根據entryType
不一樣,該值有不一樣含義。entryType
爲resource
時,name
表示資源的路徑。entryType
,取值有:resource
,mark
,measure
等,詳情戳這裏 initiatorType
,初始化該資源的資源類型:
- 初始化資源是一個`Element`時,取值爲節點的`localName`,經過`element.localName`獲取。 - 初始化資源是一個`css`文件時,取值爲`css`。 - 初始化資源是一個`XMLHttpRequest`時,取值爲`xmlhttprequest`。 - 初始化資源是一個`PerformanceNavigationTiming`對象時,取值爲空字符串。
startTime
,一個DOMHighResTimeStamp
對象,開始獲取該資源的時間。duration
,一個DOMHighResTimeStamp
對象,獲取該資源消耗時長。performance.getEntriesByName
根據參數name
,type
獲取一組當前頁面已經加載的資源數據。name
的取值對應到資源數據中的name
字段,type
取值對應到資源數據中的entryType
字段。
var entries = window.performance.getEntriesByName(name, type);
performance.getEntriesByType
根據參數type
獲取一組當前頁面已經加載的資源數據。type
取值對應到資源數據中的entryType
字段。
var entries = window.performance.getEntriesByType(type);
performance.setResourceTimingBufferSize
設置當前頁面可緩存的最大資源數據個數,entryType
爲resource
的資源數據個數。超出時,清空全部entryType
爲resource
的資源數據。
window.performance.setResourceTimingBufferSize(maxSize);
performance.onresourcetimingbufferfull
entryType
爲resource
的資源數量超出設置值的時候會觸發該事件。
performance.clearResourceTimings
移除緩存中全部entryType
爲resource
的資源數據。
performance.mark
建立一個DOMHighResTimeStamp
保存在資源緩存數據中,可經過performance.getEntries()
等相關接口獲取。
entryType
爲字符串mark
name
爲建立時設置的值startTime
爲調用mark
時的時間duration
爲0,由於mark
沒有時長window.performance.mark(name)
performance.clearMarks
移除緩存中全部entryType
爲mark
的資源數據。
performance.measure
計算兩個mark
之間的時長,建立一個DOMHighResTimeStamp
保存在資源緩存數據中,可經過performance.getEntries()
等相關接口獲取。
entryType
爲字符串measure
name
爲建立時設置的值startTime
爲調用measure
時的時間duration
爲兩個mark之間的時長window.performance.measure(name, startMark, endMark);
performance.clearMeasures
移除緩存中全部entryType
爲measure
的資源數據。
返回一個PerformanceNavigation
類型的只讀對象:
type
,進入頁面的方式:
- `TYPE_NAVIGATENEXT(0)`,經過點擊連接,書籤,在瀏覽器地址欄輸入地址,或者經過腳本跳轉 - `TYPE_RELOAD(1)`,經過點擊頁面內的刷新按鈕,或者經過`Location.reload()`方法 - `TYPE_BACK_FORWARD(2)`,經過點擊頁面內的前進後退按鈕 - `TYPE_RESERVED(255)`,其餘方式
redirectCount
,表示到達此頁面以前通過多少次重定向。返回一個包含performance
對象全部屬性的JSON
對象。
以上就是所有內容啦,有意見或者建議歡迎積極留言哦,筆芯~