精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

性能優化之window.onload

開發 前端
最近在做一些性能優化相關的工作,相信大家在工作過程中也會遇到一些性能優化相關的場景,這對于前端開發者來講是一項加分技能。為了我們的用戶在使用我們的產品時能夠有一個非常好的體驗,我們需要對頁面進行診斷優化。在行業中,我們的頁面P90在兩秒內算是達標,超過這個時間那么你就可能會流失部分用戶。

前言

最近在做一些性能優化相關的工作,相信大家在工作過程中也會遇到一些性能優化相關的場景,這對于前端開發者來講是一項加分技能。為了我們的用戶在使用我們的產品時能夠有一個非常好的體驗,我們需要對頁面進行診斷優化。在行業中,我們的頁面P90在兩秒內算是達標,超過這個時間那么你就可能會流失部分用戶。

TIP:P90指的是頁面性能數據從小到大排序,在90%位置的數據。

比如:P90為兩秒,那它的意思就是90%的用戶都能夠在「兩秒內」打開頁面

對于性能優化內容可能比較多,我們這里就先著重了解window.onload相關內容。對于頁面加載時長,我們就避免不了涉及window.onload。

性能分析

做性能優化肯定免不了需要對頁面性能進行分析,我們一般會使用ChromeDevTool作為基礎的性能分析工具,觀察頁面性能情況

Network:觀察網絡資源加載耗時及順序

Performace:觀察頁面渲染表現及JS執行情況

Lighthouse:對網站進行整體評分,找出可優化項

今天我們先著重來看Network的相關內容,比如我們打開瀏覽器控制臺:

這里我們可以看到這兩項數據:DOMContentLoaded時間為841ms、Load時間為2.06s。

它倆分別對應兩個事件:

DOMContentLoaded

當初始的 「HTML」 文檔被完全加載和解析完成之后,**DOMContentLoaded** 事件被觸發,而無需等待樣式表、圖像和子框架的完全加載。

Load

「load」 事件在整個頁面及所有依賴資源如樣式表和圖片都已完成加載時觸發。它與 DOMContentLoaded 不同,后者只要頁面 DOM 加載完成就觸發,無需等待依賴資源的加載。

看完兩者的解釋之后,相信大家應該明白了為什么Load花的時間要比DOMContentLoaded長了吧

因為load事件會被大量媒體資源阻塞,瀏覽器只有在它認為頁面上的所有資源都加載完成了才會觸發load事件。

兩者的區別

1.DOM完整的解析過程:

  • 解析HTML
  • 加載外部腳本與樣式文件
  • 解析并執行腳本
  • DOM樹構建(DOMContentLoaded事件觸發)
  • 加載圖片等資源
  • 頁面加載完畢(Load事件觸發)

2.DOM的解析受JS加載和執行的影響,我們在優化時應盡量對JS進行壓縮、拆分處理(HTTP2下),能減少 DOMContentLoaded 時間

3.圖片、視頻、CSS等資源,會阻塞 onload 事件的觸發,我們在優化過程中需要優化資源的加載時機,讓load事件盡快觸發

深入理解window.onload

onload觸發時機

JS 加載并執行完畢且頁面中所有外鏈資源加載完成之后大約 3 - 4ms(這個值跟機型和瀏覽器有關)。

比如:

window.onload = () => {
  console.log('load')
}
setTimeout(() => {
  console.log('timeout')
}, 3)

結果是setTimeout先執行,這里把值改的稍大一點你會發現就是load先執行了

哪些因素會影響window.onload

JS執行

window.onload = () => {
  console.log('load')
}
for(let i = 0; i < 100000; i++) {
  console.log(i)
}

當我們寫了一個非常耗時的JS任務時,你會發現DOMContentLoaded與Load事件都會等很久才會觸發。

說明JS的執行不僅會阻塞DOMContentLoaded事件的觸發,也會阻塞Load事件的觸發。所以在優化過程中,JS的執行也是一個重點關注對象。

async異步加載腳本

<script src="https://cdn.bootcdn.net/ajax/libs/vue/3.2.47/vue.cjs.js" async></script>
<script src="https://cdn.bootcdn.net/ajax/libs/Chart.js/4.2.1/chart.js"></script>

為了對比,這里我加載了兩個JS文件,一個使用async異步加載,一個直接加載,我們再到控制臺來查看此時的加載情況。

這里我們可以看到兩個文件都是在Load之前就會加載,只不過使用了async異步加載會比正常加載的后加載,說明使用了async異步加載腳本依然會阻塞Load的觸發。

關于async的解釋MDN上是這樣說的:

對于普通腳本,如果存在 async 屬性,那么普通腳本會被并行請求,并盡快解析和執行。

對于模塊腳本,如果存在 async 屬性,那么腳本及其所有依賴都會在延緩隊列中執行,因此它們會被并行請求,并盡快解析和執行。

該屬性能夠消除「解析阻塞的 Javascript」。解析阻塞的 Javascript 會導致瀏覽器必須加載并且執行腳本,之后才能繼續解析。

這里可能會有誤解,我覺得它應該是不會阻塞其它腳本內容的加載與執行,由于它的加載是在load之前的,所以它依然會阻塞load的觸發,但從整體上來看,它對性能優化還是有幫助的。

defer異步加載腳本

這里還是跟上面一樣的場景,我們把async換成defer。

這里看上去跟async的加載沒什么不同,它的加載依然會比正常加載的方式滯后,但會在load之前。

關于defer:

  • 這個布爾屬性的設置是為了向瀏覽器表明,該腳本是要在文檔被解析后,但在觸發 DOMContentLoaded 事件之前執行的。
  • 包含 defer 屬性的腳本將阻塞 DOMContentLoaded 事件觸發,直到腳本完成加載并執行。
  • 包含 defer 屬性的腳本會按照它們出現在文檔中的順序執行。
  • 這個屬性能夠消除「阻塞解析的 JavaScript」,在這種情況下,瀏覽器必須在繼續解析之前加載和執行腳本。

所以這里跟上面差不多,對性能優化也是有幫助的,需要注意使用場景。

圖片預加載

在工作過程中我們可能會有一些圖片預加載的使用場景,主要是為了能夠讓一些較大的圖片資源能夠快速的渲染呈現給用戶,我們一般會提前加載一次圖片,等到真正使用時瀏覽器就可以直接從緩存中取出并渲染。

<div class="container">
  <img src="https://imgservices.image.com/s06012023/9ac85415.g0q5wz.png" class="zan_icon" />
</div>

<script>
  window.onload = () => {
    console.log('load')
  }
  const img = new Image();
  img.src = 'https://router.vuejs.org/logo.svg';

</script>

比如這里,我們在html里面通過img加載了一張圖片,在JS中預加載了一張圖片,雖然這張圖片并沒有真實渲染,但它也是會發起請求的,并影響load事件的觸發。

所以我們在做預加載時也需要考慮給頁面性能帶來的影響。

影響load時間執行的內容還有很多,在對頁面進行性能優化時,這些內容都是可以進行優化方向

onload與native

我們都知道H5頁面在通過native得webview容器進行渲染時,頂部都會有一個加載進度條,有時候在弱網環境下,這個進度條會一直在那慢慢加載,很長時間不會消失,非常影響用戶體驗,這最主要的原因是onload 的觸發被阻塞,從而客戶端控制的進度條不會消失,頁面調用客戶端的方法不會執行。

iOS 中判斷 webview 加載完成的 「webViewDidFinishLoad」 方法,Android 中判斷 webview 加載完成的 「onPageFinished」 方法本質觸發時機上都對應頁面上的 window.onload,一般來說會稍晚于 window.onload(某些特殊情況會早于 window.onload,比如頁面里有 iframe 等情況)。

也就是說 「對 onload 有影響的因素也同樣會影響這些 Native 方法」。而在 Hybrid 開發中,一些 Native 和 Web 之間的交互和調用往往要在webViewDidFinishLoad / onPageFinished 之后。因此如果 onload 的觸發被推遲了,那么這些 Native 相關的調用也都會被推遲。

「因此如果是Hybrid應用,尤其要注意讓onload盡快觸發。」

performance性能統計

DOMContentLoaded事件與Load事件花費的時間,我們可以通過performance 這個對象的一些屬性進行統計,時間精確到納秒級。很多公司的性能監控平臺也主要是利用這個對象的數據進行上報的。

  • connectStart:HTTP(TCP)開始建立連接的時間。如果是持久連接,則和 fetchStart 的時間相等,注意,如果在傳輸層發生了錯誤且重新建立連接,這里顯示的是新建立連接的開始時間。
  • connectEnd: 完成建立連接的時間。
  • domComplete:DOM 樹解析完成,并且資源準備就緒的時間,Document.readyState 變為 complete,并將拋出 readystatechange 相關事件。
  • domContentLoadedEventEnd:DOM 解析完成后,網頁內資源加載完成的時間(如 JS、css 加載執行完畢)。
  • domContentLoadedEventStart:DOM 解析完成后,網頁內資源加載開始的時間在 DOMContentLoaded 事件拋出前發生。
  • loadEventStart:load 事件觸發,也即 load 回調函數開始執行的時間。注意:如果沒有綁定 load 事件,值為 0。
  • loadEventEnd:load 事件的回調函數執行完畢的時間。
  • 等...更詳細內容可查看MDN文檔
責任編輯:華軒 來源: 前端南玖
相關推薦

2025-03-12 00:00:00

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲

2022-02-16 14:10:51

服務器性能優化Linux

2021-11-29 11:13:45

服務器網絡性能

2009-06-30 11:23:02

性能優化

2018-01-09 16:56:32

數據庫OracleSQL優化

2019-12-13 10:25:08

Android性能優化啟動優化

2011-07-11 15:26:49

性能優化算法

2023-07-19 12:24:48

C++constexpr?語句

2013-02-20 14:32:37

Android開發性能

2025-01-20 09:09:59

2021-07-16 23:01:03

SQL索引性能

2013-09-17 10:32:08

Android性能優化數據庫

2011-06-14 14:17:23

性能優化系統層次

2023-04-10 11:18:38

前端性能優化

2011-06-14 11:14:10

性能優化代碼

2009-08-27 11:02:22

JavaScript事

2011-06-14 14:32:46

性能優化

2017-08-25 15:28:20

Oracle性能優化虛擬索引

2017-01-19 19:07:28

iOS進階性能優化
點贊
收藏

51CTO技術棧公眾號

手机看片久久| 天天操天天插天天射| 欧美色图一区| 欧美精品乱人伦久久久久久| 97超碰免费观看| 狠狠躁日日躁夜夜躁av| 丝袜亚洲精品中文字幕一区| 日韩中文字幕视频| 艳妇乳肉豪妇荡乳xxx| 日韩伦理三区| 亚洲卡通动漫在线| 狠狠色噜噜狠狠狠狠色吗综合 | 国产精品一区三区| 色综合五月天导航| 一区二区黄色片| 久久av网站| 91久久精品一区二区三区| ijzzijzzij亚洲大全| 三级视频在线| 国产精品一区二区在线播放 | 精品久久蜜桃| 91激情在线观看| 精品二区久久| 久久韩国免费视频| 中文字幕网站在线观看| 亚洲精品一二三**| 欧美日韩一区二区三区在线看| 欧美黑人3p| 丰满少妇一级片| 精品一区二区三区久久| 人妖精品videosex性欧美| xxxx日本少妇| 日韩精品永久网址| 亚洲品质视频自拍网| 欧美丰满熟妇bbb久久久| 日韩av黄色| 欧美日韩中文字幕| 欧美激情亚洲天堂| 国产丝袜在线| 国产精品理论片| 先锋影音亚洲资源| 日韩在线免费看| eeuss国产一区二区三区| 91免费精品国偷自产在线| 精品人妻一区二区色欲产成人| 欧美精品第一区| 亚洲成人xxx| 中文字幕在线观看91| 精品一区二区三区四区五区| 欧美日韩成人综合天天影院| 国产成人av影视| 中日韩脚交footjobhd| 香蕉av福利精品导航| 女人被男人躁得好爽免费视频| 亚洲aⅴ乱码精品成人区| 国产激情一区二区三区四区 | 日本丰满大乳奶| 99riav在线| 中文av一区二区| 午夜精品亚洲一区二区三区嫩草| 在线观看亚洲一区二区| 日日夜夜免费精品视频| 日韩免费在线播放| 成人公开免费视频| 男女av一区三区二区色多| 77777亚洲午夜久久多人| 五月天婷婷丁香| 国产精品腿扒开做爽爽爽挤奶网站| www.亚洲成人| 欧美三级在线免费观看| 国产字幕视频一区二区| 久久久久久国产精品| 黄色一级片中国| 亚洲性感美女99在线| 97超碰蝌蚪网人人做人人爽| 久久久久久久久影院| 麻豆成人在线| 国产精品视频免费在线| 国产剧情精品在线| 懂色中文一区二区在线播放| 精品国产一区二区三区久久久久久| 中文字幕在线播放日韩| 久久精品国内一区二区三区| 91中文精品字幕在线视频| а√天堂资源在线| 91视频www| 亚洲三区在线观看| 色呦呦在线视频| 欧美色videos| 国产成年人视频网站| 草草视频在线一区二区| 亚洲男人天堂古典| 亚洲怡红院在线观看| 欧美午夜a级限制福利片| 欧美做受高潮电影o| 91麻豆成人精品国产| 国产一区二区三区综合| 精品一区二区三区自拍图片区| 亚洲成人一级片| www国产亚洲精品久久麻豆| 正义之心1992免费观看全集完整版| 你懂的在线看| 1024国产精品| 久久久久人妻精品一区三寸| 中文字幕日韩亚洲| 日韩精品丝袜在线| 91麻豆免费视频网站| 一二三区精品| 91中文字幕一区| 国产免费a∨片在线观看不卡| 久久久久久免费网| 亚洲小视频在线播放| 成人av观看| 欧美v亚洲v综合ⅴ国产v| 夜夜春很很躁夜夜躁| 好看不卡的中文字幕| 国产精品永久免费观看| 图片区 小说区 区 亚洲五月| 国产98色在线|日韩| 日本不卡二区| 白浆视频在线观看| 91精品国产色综合久久不卡电影| 国产成人美女视频| 亚洲桃色综合影院| 韩国v欧美v日本v亚洲| 国产模特av私拍大尺度| 国产亚洲精品aa午夜观看| 日本wwwcom| 久久丁香四色| xvideos亚洲| 一级片在线免费播放| 91网站视频在线观看| 屁屁影院ccyy国产第一页| 亚洲热av色在线播放| 中文字幕av一区| 无码人妻精品一区二区50| av中文字幕亚洲| 亚洲爆乳无码精品aaa片蜜桃| 嗯~啊~轻一点视频日本在线观看| 午夜影院在线观看欧美| 一级黄色高清视频| 精品国产一区二区三区噜噜噜| 久久精品国产欧美激情| 狠狠人妻久久久久久| 99国产精品久久久久久久久久久| 三区精品视频观看| 蜜桃视频www网站在线观看| 精品国产网站在线观看| 九九热国产精品视频| 国产精品亚洲一区二区三区在线| 精品视频一区二区| 国产蜜臀一区二区打屁股调教| 色呦呦日韩精品| 国产 欧美 在线| 日韩精品乱码免费| 日韩福利二区| 国产精品伊人| 尤物九九久久国产精品的特点 | 成人av毛片| 在线视频你懂得一区| 一区二区不卡免费视频| 午夜在线一区| 污视频在线免费观看一区二区三区| 自拍亚洲图区| 日韩一级片网站| 国产第100页| 99久久婷婷国产| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 国产亚洲高清在线观看| 久久国产天堂福利天堂| 国产高清免费在线观看| 亚洲线精品一区二区三区| 亚洲av成人片色在线观看高潮 | 久久这里只有精品23| 成人知道污网站| 亚洲91精品在线观看| 欧洲综合视频| 欧美日本韩国一区二区三区视频| 黄色在线观看av| 老牛嫩草一区二区三区日本| 亚洲韩国在线| 亚洲va欧美va人人爽成人影院| 日韩一二三在线视频播| 国产视频在线观看视频| 亚洲伊人伊色伊影伊综合网 | 床上的激情91.| 国产h视频在线播放| 激情五月综合网| 91影院未满十八岁禁止入内| 人人草在线视频| 日韩中文字幕视频在线| 亚洲AV无码国产精品午夜字幕| 国产精品久久网站| 日本在线不卡一区二区| 日韩电影一区二区三区四区| 亚洲小说欧美另类激情| 婷婷激情久久| 亚洲一区二区日本| 手机看片久久| 97国产suv精品一区二区62| 超碰免费在线观看| 亚洲第一精品夜夜躁人人爽| 中文字幕观看视频| 亚洲www啪成人一区二区麻豆| 精品国产免费久久久久久婷婷| 国产精品久久久久蜜臀| 国产精品美女久久久久av福利| 免费污视频在线观看| 亚洲人午夜色婷婷| 精品国产av 无码一区二区三区| 中文字幕在线观看不卡| 精品中文字幕在线播放| 国模大尺度一区二区三区| 免费高清在线观看免费| 日本不卡电影| 久久伦理网站| ccyy激情综合| 亚洲在线观看视频网站| 九色成人搞黄网站| 91av国产在线| 欧美xxx黑人xxx水蜜桃| xvideos亚洲人网站| 福利成人在线观看| 日韩高清免费在线| 亚洲国产精品久久久久爰性色 | 乱亲女秽乱长久久久| 日韩一区av| 亚洲成人网在线| 国产又黄又爽视频| 在线精品视频一区二区三四| 日韩手机在线观看| 亚洲综合在线免费观看| 日韩成人短视频| 亚洲欧洲日产国产综合网| www.99热| 国产亚洲精久久久久久| 黄瓜视频污在线观看| caoporn国产精品| 中文字幕天堂网| 成人午夜免费视频| 在线播放第一页| 丁香婷婷综合激情五月色| 欧美污在线观看| 国产成人久久精品77777最新版本| 黄色www网站| 欧美日韩三级电影在线| 国产精品无码电影在线观看| 欧美成熟视频| 欧美中文字幕在线观看视频| 欧美午夜久久| 久久成人福利视频| 亚洲精一区二区三区| 你懂的av在线| 噜噜噜在线观看免费视频日韩| 99re8这里只有精品| 天天综合国产| 2022中文字幕| 亚洲人成久久| 国产美女三级视频| 日韩影院在线观看| 免费涩涩18网站入口| 免费人成精品欧美精品| 国产精品69av| 国产精品伦理| 国产精品免费小视频| 伊人国产精品| 成人动漫视频在线观看免费| 97精品久久| 免费国产在线精品一区二区三区| 国产视频一区二| 成人免费91在线看| 亚洲黄色录像| 亚洲一区三区视频在线观看| 欧美在线首页| 蜜臀av无码一区二区三区| 国产日韩亚洲| 亚洲老女人av| 国产99久久久国产精品潘金| 欧美深性狂猛ⅹxxx深喉| 久久精品一区四区| 国产又色又爽又高潮免费| 一区二区成人在线| 香蕉影院在线观看| 欧美一区二区三区四区高清| 视频一区二区免费| 中文字幕日韩电影| 欧美色图天堂| 国产精品69av| 中文字幕久久精品一区二区| 另类小说综合网| 91tv官网精品成人亚洲| 黄色www网站| 国内精品不卡在线| 欧洲女同同性吃奶| 一区二区视频免费在线观看| 国产欧美一区二区三区在线看蜜臂| 亚洲动漫第一页| 人人爽人人爽人人片av| 欧美一三区三区四区免费在线看 | 日韩欧美一区二区在线视频| 亚洲国产精品久久久久久6q| 一级做a爰片久久毛片美女图片| 水莓100在线视频| 欧美老人xxxx18| 人妻与黑人一区二区三区| 在线日韩精品视频| √8天堂资源地址中文在线| 国产精品久久国产精品99gif| 成人性教育av免费网址| 成人有码在线视频| 国产精品一线天粉嫩av| 97超碰国产精品| 久久av中文字幕片| 全黄一级裸体片| 午夜精品一区二区三区三上悠亚| 日韩精品视频免费播放| 欧美日韩国产美| 久久视频www| 韩国视频理论视频久久| 国产亚洲高清一区| 伊人婷婷久久| 日韩不卡手机在线v区| 国产精品久久AV无码| 亚洲无线码一区二区三区| 夜夜骚av一区二区三区| 中文字幕日韩av电影| 欧美freesex黑人又粗又大| 波多野结衣成人在线| 国产精品福利在线观看播放| www.天天射.com| 国产区在线观看成人精品| www.国产一区二区| 亚洲国产成人91精品| 欧美xxxbbb| 国产精品久久一区二区三区| 68国产成人综合久久精品| 激情五月俺来也| 中文文精品字幕一区二区| 欧美成人一区二区三区四区| 日韩精品视频免费| 亚洲精品动漫| 麻豆av福利av久久av| 一区二区福利| 波多野结衣一本| 色综合久久久久综合体桃花网| 一区二区三区在线免费观看视频 | 国产精品久久久久9999赢消| 国产又黄又大又粗视频| 99视频一区二区| 国产成人在线播放视频| 亚洲第一视频网| 精精国产xxx在线视频app| 精品乱色一区二区中文字幕| 99精品欧美| 精品人妻无码一区二区三区| 欧美午夜精品在线| 国产在线一在线二| 国产精品久久久久av免费| 欧美精选视频在线观看| 午夜免费福利视频在线观看| 一区在线中文字幕| 性猛交xxxx乱大交孕妇印度| 欧美激情国内偷拍| 狼人天天伊人久久| av观看免费在线| 国产精品女主播av| 国产99久久九九精品无码免费| 在线观看久久久久久| 色999韩欧美国产综合俺来也| 国产精品视频免费观看| 日韩香蕉视频| 四虎国产精品成人免费入口| 欧美日韩一区二区三区免费看| 日韩a在线观看| 国产精品露脸av在线| 亚洲在线久久| 玖玖爱在线精品视频| 欧美中文字幕不卡| 黄色国产网站在线播放| 鬼打鬼之黄金道士1992林正英| 99视频精品全部免费在线视频| 北条麻妃69av| 国产精品看片你懂得| 精品国产无码一区二区| 91精品国产91久久久久| 成人三级视频| 亚洲无人区码一码二码三码| 色综合天天综合色综合av| 久操视频在线| 裸模一区二区三区免费| 国产一区二区不卡在线| 欧美精品亚洲精品日韩精品| 中文字幕亚洲欧美在线| 91综合精品国产丝袜长腿久久| 超级碰在线观看| 久久嫩草精品久久久精品一| 888奇米影视| 欧美一区二区三区……| 欧美精选在线| 久久丫精品忘忧草西安产品|