摘要:如何理解是由性能小組提出的用于精確計(jì)算網(wǎng)頁(yè)性能數(shù)據(jù)的特性,它返一個(gè)對(duì)象,支持以上的所有瀏覽器,這里給出對(duì)象的原型返回對(duì)象,包含延遲相關(guān)的性能信息。返回對(duì)象,該對(duì)象表示在當(dāng)前給定瀏覽上下文中網(wǎng)頁(yè)導(dǎo)航的類型,,,以及次數(shù)。
如何理解 window.performance
window.performance 是由 W3C 性能小組提出的用于精確計(jì)算網(wǎng)頁(yè)性能數(shù)據(jù)的特性,它返一個(gè) Performance 對(duì)象,支持 IE9 以上的所有瀏覽器,這里給出對(duì)象的原型:
Performance.timing
返回 PerformanceTiming 對(duì)象,包含延遲相關(guān)的性能信息。
Performance.navigation
返回 PerformanceNavigation 對(duì)象,該對(duì)象表示在當(dāng)前給定瀏覽上下文中網(wǎng)頁(yè)導(dǎo)航的類型(TYPE_BACK_FORWARD,TYPE_NAVIGATE,TYPE_RELOAD,TYPE_RESERVED)以及次數(shù)。
performance.memory
在 Chrome 中添加的一個(gè)非標(biāo)準(zhǔn)擴(kuò)展,返回內(nèi)存占用的基本信息。(盡量避免使用非標(biāo)準(zhǔn)化API)
Performance.timeOrigin
返回關(guān)于性能評(píng)估的開(kāi)始時(shí)間(高分辨率時(shí)間戳)
Performance.onresourcetimingbufferfull
當(dāng) resourcetimingbufferfull 事件觸發(fā)時(shí),作為事件處理回調(diào)
function buffer_full_handler(event) { console.log("[Warning]: Resource Timing Buffer is full"); performance.setResourceTimingBufferSize(200); // size >= 150 } function initPerformanceMeasurement() { if (performance === undefined) { console.log("[Warning]: Performance interface is not supported"); return } // Set a callback if the resource buffer becomes filled performance.onresourcetimingbufferfull = buffer_full_handler; } document.body.onload = initPerformanceMeasurement;
通常建議 performance entry 應(yīng)該滿足至少 150 個(gè)以上
為何使用 Performance通常熟悉 Chrome 開(kāi)發(fā)者工具的朋友都會(huì)在開(kāi)發(fā)環(huán)境下用到網(wǎng)絡(luò)面板的相關(guān)操作,當(dāng)我們開(kāi)啟記錄功能時(shí),就會(huì)實(shí)時(shí)傳回關(guān)于網(wǎng)頁(yè)響應(yīng)階段的性能數(shù)據(jù),但當(dāng)我們需要統(tǒng)計(jì)分析用戶打開(kāi)網(wǎng)頁(yè)時(shí)的性能,因此我們將 performance 原始信息或通過(guò)簡(jiǎn)單計(jì)算后的信息上傳到服務(wù)器,配合其他網(wǎng)絡(luò)屬性(例如 HTTP 請(qǐng)求頭信息),就可以很好地進(jìn)行性能上報(bào)。
項(xiàng)目中的應(yīng)用1.判斷是否刷新頁(yè)面
const performance = window.performance if(performance.navigation.type === 1) { console.log("Page was not reloaded.") } else { console.log("Page was reloaded.") }
這里的 performance.navigation.type 返回一個(gè)整數(shù)值,表示網(wǎng)頁(yè)的加載來(lái)源,有以下幾種情況:
返回值:0
類型常量:performance.navigation.TYPE_NAVIGATENEXT
描述:網(wǎng)頁(yè)通過(guò)點(diǎn)擊鏈接、地址欄輸入、表單提交、腳本操作等方式加載
返回值:1
類型常量:performance.navigation.TYPE_RELOAD
描述:網(wǎng)頁(yè)通過(guò) 刷新 按鈕或者 location.reload() 方法加載
返回值:2
類型常量:performance.navigation.TYPE_BACK_FORWARD
描述;網(wǎng)頁(yè)通過(guò) 前進(jìn) 或 后退 按鈕加載
返回值:255
類型常量:performance.navigation.TYPE_UNDEFINED
描述:網(wǎng)頁(yè)通過(guò)其它 任何可執(zhí)行的來(lái)源 加載
此外,通過(guò) performance.navigation.redirectCount 可以獲取當(dāng)前網(wǎng)頁(yè)重定向跳轉(zhuǎn)的次數(shù)
2.測(cè)試函數(shù)執(zhí)行時(shí)間
function fac() { return n === 1 ? 1 : n * arguments.callee(n - 1) } let t1 = window.performance.now() fac(100) let t2 = window.performance.now() console.log("diff: ", t2 - t1, " ms") // output: diff: 0.14500000001862645 ms
未完待續(xù)...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/92313.html
摘要:前言最近有幸參與一個(gè)前端質(zhì)量監(jiān)控類項(xiàng)目的重構(gòu),算是個(gè)人初次接觸到前端質(zhì)量監(jiān)控相關(guān)的知識(shí),對(duì)于其中的性能統(tǒng)計(jì)部分很感興趣,查詢資料之后寫(xiě)了文章,作為個(gè)人學(xué)習(xí)記錄,如有錯(cuò)誤,敬請(qǐng)斧正頁(yè)面整體性能通過(guò)瀏覽器提供的方法,我們能夠得到網(wǎng)頁(yè)每個(gè)處理階段 前言 最近有幸參與一個(gè)前端質(zhì)量監(jiān)控類項(xiàng)目的重構(gòu),算是個(gè)人初次接觸到前端質(zhì)量監(jiān)控相關(guān)的知識(shí),對(duì)于其中的性能統(tǒng)計(jì)部分很感興趣,查詢資料之后寫(xiě)了文章,作...
摘要:為指定事件注冊(cè)一個(gè)單次監(jiān)聽(tīng)器,即監(jiān)聽(tīng)器最多只會(huì)觸發(fā)一次,觸發(fā)后立刻解除該監(jiān)聽(tīng)器。移除指定事件的某個(gè)監(jiān)聽(tīng)器,監(jiān)聽(tīng)器必須是該事件已經(jīng)注冊(cè)過(guò)的監(jiān)聽(tīng)器。返回指定事件的監(jiān)聽(tīng)器數(shù)組。如何創(chuàng)建空對(duì)象我們已經(jīng)了解到,是要來(lái)儲(chǔ)存監(jiān)聽(tīng)事件監(jiān)聽(tīng)器數(shù)組的。 毫無(wú)疑問(wèn),nodeJS改變了整個(gè)前端開(kāi)發(fā)生態(tài)。本文通過(guò)分析nodeJS當(dāng)中events模塊源碼,由淺入深,動(dòng)手實(shí)現(xiàn)了屬于自己的ES6事件觀察者系統(tǒng)。千萬(wàn)不...
In [1]: from pandas import Series, DataFrame In [2]: import pandas as pd In [3]: obj = Series([4,7,-5,3]) In [4]: obj Out[4]: 0 4 1 7 2 -5 3 3 dtype: int64
摘要:從一次實(shí)驗(yàn)學(xué)習(xí)性能優(yōu)化之接口詳解下圖是接口的屬性提供給定頁(yè)面的與時(shí)間相關(guān)的性能信息包含了頁(yè)面瀏覽上下文的導(dǎo)航信息,比如大量獲取資源的重定向。返回當(dāng)前網(wǎng)頁(yè)事件的回調(diào)函數(shù)運(yùn)行結(jié)束時(shí)的毫秒時(shí)間戳。 從一次實(shí)驗(yàn)學(xué)習(xí)性能優(yōu)化 Web API之Performance 接口詳解 下圖是Performance 接口的屬性,提供給定頁(yè)面的與時(shí)間相關(guān)的性能信息.showImg(https://segmen...
閱讀 2415·2021-10-14 09:43
閱讀 2444·2021-09-09 09:34
閱讀 1608·2019-08-30 12:57
閱讀 1208·2019-08-29 14:16
閱讀 728·2019-08-26 12:13
閱讀 3209·2019-08-26 11:45
閱讀 2293·2019-08-23 16:18
閱讀 2670·2019-08-23 15:27