window.performance

performanced的作用

Web Performance 接口允許網(wǎng)頁中的 JavaScript 代碼可以通過具體的函數(shù)(由 window 對象的 performance 屬性提供)測量當(dāng)前網(wǎng)頁頁面或者 web應(yīng)用的性能脖捻。它能提供高精度的時間戳阔逼,可以更加精準(zhǔn)的計算腳本運(yùn)行的時間。

瀏覽器兼容性

pc和移動端的主流瀏覽器都支持地沮。

API
1嗜浮、performance.timing(頁面整體的時間參數(shù))

performance對象的timing屬性指向一個對象,它包含了各種與瀏覽器性能有關(guān)的時間數(shù)據(jù)摩疑,提供瀏覽器處理網(wǎng)頁各個階段的耗時周伦。我們在chrome中輸入performance.timing就可以看到下面的數(shù)據(jù):

控制臺輸出的performance.timing

performance.timing的所有屬性都是只讀屬性:

navigationStart:是一個無符號long long 型的毫秒數(shù),表征了從同一個瀏覽器上下文的上一個文檔卸載(unload)結(jié)束時的UNIX時間戳未荒。如果沒有上一個文檔专挪,這個值會和PerformanceTiming.fetchStart相同。
unloadEventStart:是一個無符號long long 型的毫秒數(shù),表征了unload事件拋出時的UNIX時間戳。如果沒有前一個網(wǎng)頁毅哗,或者之前的網(wǎng)頁跳轉(zhuǎn)重定向不是在同一個域名內(nèi), 這個值會返回0.
unloadEventEnd:是一個無符號long long 型的毫秒數(shù),表征了unload事件處理完成時的UNIX時間戳迫卢。如果沒有前一個網(wǎng)頁,或者之前的網(wǎng)頁跳轉(zhuǎn)不是在同一個域名內(nèi)冶共, 這個值會返回0.
redirectStart:是一個無符號long long 型的毫秒數(shù)乾蛤,表征了第一個HTTP重定向開始時的UNIX時間戳。如果沒有重定向捅僵,或者重定向中的一個不同源家卖,這個值會返回0.
redirectEnd:是一個無符號long long 型的毫秒數(shù),表征了最后一個HTTP重定向完成時(也就是說是HTTP響應(yīng)的最后一個bite直接被收到的時間)的UNIX時間戳庙楚。如果沒有重定向上荡,或者重定向中的一個不同源,這個值會返回0.
fetchStart:是一個無符號long long 型的毫秒數(shù)馒闷,表征了瀏覽器準(zhǔn)備好使用HTTP請求來獲取(fetch)文檔的UNIX時間戳酪捡。這個時間點會在檢查任何應(yīng)用緩存之前叁征。
domainLookupStart:是一個無符號long long 型的毫秒數(shù),表征了域名查詢開始的UNIX時間戳逛薇。如果使用了持續(xù)連接(persistent connection)捺疼,或者這個信息存儲到了緩存或者本地資源上,這個值將和 PerformanceTiming.fetchStart一致永罚。
domainLookupEnd:是一個無符號long long 型的毫秒數(shù)帅涂,表征了域名查詢結(jié)束的UNIX時間戳。如果使用了持續(xù)連接(persistent connection)尤蛮,或者這個信息存儲到了緩存或者本地資源上,這個值將和 PerformanceTiming.fetchStart一致斯议。
connectStart:返回HTTP請求開始向服務(wù)器發(fā)送時的Unix毫秒時間戳产捞。如果使用持久連接(persistent connection),則返回值等同于fetchStart屬性的值哼御。
(secureConnectionStart):可選特性坯临。用戶代理如果沒有對應(yīng)的東東,就要把這個設(shè)置為undefined恋昼。如果有這個東東看靠,并且是HTTPS協(xié)議,那么就要返回開始SSL握手的那個時間液肌。 如果不是HTTPS挟炬, 那么就返回0
connectEnd:返回瀏覽器與服務(wù)器之間的連接建立時的Unix毫秒時間戳。如果建立的是持久連接嗦哆,則返回值等同于fetchStart屬性的值谤祖。連接建立指的是所有握手和認(rèn)證過程全部結(jié)束。
secureConnectionStart:返回瀏覽器與服務(wù)器開始安全鏈接的握手時的Unix毫秒時間戳老速。如果當(dāng)前網(wǎng)頁不要求安全連接粥喜,則返回0。
requestStart:返回瀏覽器向服務(wù)器發(fā)出HTTP請求時(或開始讀取本地緩存時)的Unix毫秒時間戳橘券。
responseStart:返回瀏覽器從服務(wù)器收到(或從本地緩存讀榷钕妗)第一個字節(jié)時的Unix毫秒時間戳。
responseEnd:返回用戶代理接收到最后一個字符的Unix毫秒時間戳旁舰,和當(dāng)前連接被關(guān)閉的時間中锋华,更早的那個。同樣箭窜,文檔可能來自服務(wù)器供置、緩存、或本地資源绽快。
domLoading:返回當(dāng)前網(wǎng)頁DOM結(jié)構(gòu)開始解析時(即Document.readyState屬性變?yōu)椤發(fā)oading”芥丧、相應(yīng)的readystatechange事件觸發(fā)時)的Unix毫秒時間戳紧阔。
domInteractive:返回當(dāng)前網(wǎng)頁DOM結(jié)構(gòu)結(jié)束解析、開始加載內(nèi)嵌資源時(即Document.readyState屬性變?yōu)椤癷nteractive”续担、相應(yīng)的readystatechange事件觸發(fā)時)的Unix毫秒時間戳擅耽。
domContentLoadedEventStart:返回當(dāng)前網(wǎng)頁DOMContentLoaded事件發(fā)生時(即DOM結(jié)構(gòu)解析完畢、所有腳本開始運(yùn)行時)的Unix毫秒時間戳物遇。
domContentLoadedEventEnd:返回當(dāng)前網(wǎng)頁所有需要執(zhí)行的腳本執(zhí)行完成時的Unix毫秒時間戳乖仇。
domComplete:返回當(dāng)前網(wǎng)頁DOM結(jié)構(gòu)生成時(即Document.readyState屬性變?yōu)椤癱omplete”,以及相應(yīng)的readystatechange事件發(fā)生時)的Unix毫秒時間戳询兴。
loadEventStart:返回當(dāng)前網(wǎng)頁load事件的回調(diào)函數(shù)開始時的Unix毫秒時間戳乃沙。如果該事件還沒有發(fā)生,返回0诗舰。
loadEventEnd:返回當(dāng)前網(wǎng)頁load事件的回調(diào)函數(shù)運(yùn)行結(jié)束時的Unix毫秒時間戳警儒。如果該事件還沒有發(fā)生,返回0眶根。

根據(jù)上面這些屬性蜀铲,可以計算出網(wǎng)頁加載各個階段的耗時,對我們比較有用的頁面性能數(shù)據(jù)大概包括如下幾個:

DNS查詢耗時 :domainLookupEnd - domainLookupStart
TCP鏈接耗時 :connectEnd - connectStart
request請求耗時 :responseEnd - responseStart
解析dom樹耗時 : domComplete - domInteractive
白屏?xí)r間 :responseStart - navigationStart
domready時間 :domContentLoadedEventEnd - navigationStart
onload時間 :loadEventEnd - navigationStart
2属百、performance.getEntries()

在chrome中輸入performance.getEntries()可以得到靜態(tài)資源的數(shù)組列表:

performance.getEntries()得到的資源文件加載數(shù)據(jù)列表

這個接口是獲取所有資源文件的方法记劝,該API還提供了另外兩個接口:

performance.getEntriesByName(name) 根據(jù)資源的name獲取相應(yīng)的數(shù)據(jù)(如上圖中的name)
performance.getEntriesByType(entryType) 根據(jù)資源的name獲取相應(yīng)的數(shù)據(jù)(如上圖中的entryType)
3、performance.navigation

在chrome中輸入performance.navigation:


performance.navigation

這個對象有兩個屬性:
  performance.navigation.type(該屬性返回一個整數(shù)值族扰,表示網(wǎng)頁的加載來源厌丑,可能有以下4種情況):
  0:網(wǎng)頁通過點擊鏈接、地址欄輸入渔呵、表單提交蹄衷、腳本操作等方式加載,相當(dāng)于常數(shù)performance.navigation.TYPE_NAVIGATE厘肮。
  1:網(wǎng)頁通過“重新加載”按鈕或者location.reload()方法加載愧口,相當(dāng)于常數(shù)performance.navigation.TYPE_RELOAD。
  2:網(wǎng)頁通過“前進(jìn)”或“后退”按鈕加載类茂,相當(dāng)于常數(shù)performance.navigation.TYPE_BACK_FORWARD耍属。
  255:任何其他來源的加載,相當(dāng)于常數(shù)performance.navigation.TYPE_RESERVED巩检。
 performance.navigation.redirectCount:表示網(wǎng)頁經(jīng)過重定向的次數(shù)厚骗。

4、performance.memory
performance.memory
 memory: {
    usedJSHeapSize:  16100000, // JS 對象(包括V8引擎內(nèi)部對象)占用的內(nèi)存兢哭,一定小于 totalJSHeapSize领舰,否則可能出現(xiàn)內(nèi)存泄漏
    totalJSHeapSize: 35100000, // 可使用的內(nèi)存
    jsHeapSizeLimit: 793000000 // 內(nèi)存大小限制
},
5、performance.now()

performance.now方法返回當(dāng)前網(wǎng)頁自從performance.timing.navigationStart到當(dāng)前時間之間的微秒數(shù)。

6冲秽、performance.mark()

mark方法用于為相應(yīng)的視點做標(biāo)記舍咖。對應(yīng)的方法有 performance.clearMarks()。

相關(guān)資料
1 https://developer.mozilla.org/zh-CN/docs/Web/API/Performance
2 http://javascript.ruanyifeng.com/bom/performance.html#toc5

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锉桑,一起剝皮案震驚了整個濱河市排霉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌民轴,老刑警劉巖攻柠,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異后裸,居然都是意外死亡瑰钮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門微驶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來浪谴,“玉大人,你說我怎么就攤上這事祈搜。” “怎么了士八?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵容燕,是天一觀的道長。 經(jīng)常有香客問我婚度,道長蘸秘,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任蝗茁,我火速辦了婚禮醋虏,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘哮翘。我一直安慰自己颈嚼,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布饭寺。 她就那樣靜靜地躺著阻课,像睡著了一般。 火紅的嫁衣襯著肌膚如雪艰匙。 梳的紋絲不亂的頭發(fā)上限煞,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天,我揣著相機(jī)與錄音员凝,去河邊找鬼署驻。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的旺上。 我是一名探鬼主播瓶蚂,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼抚官!你這毒婦竟也來了扬跋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤凌节,失蹤者是張志新(化名)和其女友劉穎钦听,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體倍奢,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡朴上,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了卒煞。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片痪宰。...
    茶點故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖畔裕,靈堂內(nèi)的尸體忽然破棺而出衣撬,到底是詐尸還是另有隱情,我是刑警寧澤扮饶,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布具练,位于F島的核電站,受9級特大地震影響甜无,放射性物質(zhì)發(fā)生泄漏扛点。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一岂丘、第九天 我趴在偏房一處隱蔽的房頂上張望陵究。 院中可真熱鬧,春花似錦奥帘、人聲如沸铜邮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽牲距。三九已至,卻和暖如春钥庇,著一層夾襖步出監(jiān)牢的瞬間牍鞠,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工评姨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留难述,地道東北人萤晴。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像胁后,于是被迫代替她去往敵國和親店读。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容

  • window.performance是W3C性能小組引入的新的API攀芯,允許網(wǎng)頁訪問某些函數(shù)來測量網(wǎng)頁和Web應(yīng)用程...
    _ihhu閱讀 2,084評論 0 0
  • 問題背景:打開瀏覽器之后屯断,打開某網(wǎng)站首頁,在console里輸入 希望得到頁面內(nèi)所有資源文件的加載時間侣诺。 然后將r...
    stois閱讀 457評論 0 0
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,111評論 25 707
  • 筆記參考自《響應(yīng)式Web設(shè)計:HTML5和CSS3實踐》殖演,2013年出版內(nèi)容說不上最新。如下是全書的章的目錄:第 ...
    于曉魚閱讀 926評論 0 1
  • 中國股市政策的制定,是以鞏固和加強(qiáng)黨的領(lǐng)導(dǎo)為出發(fā)點的,這是股市政策風(fēng)險的根源年鸳。保持政權(quán)的穩(wěn)定,是黨和政府的“大局”...
    會逃跑的小偷閱讀 71評論 0 0