成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

JavaScript前端性能優(yōu)化

lewif / 2163人閱讀

摘要:性能優(yōu)化的知識(shí)非常龐雜,這里我們來(lái)介紹幾種常用的性能優(yōu)化方式。一中的前端性能優(yōu)化原則多使用內(nèi)存緩存等方法減少計(jì)算減少網(wǎng)絡(luò)請(qǐng)求二針對(duì)上述兩項(xiàng)原則,我們可以從兩個(gè)方向入手來(lái)進(jìn)行前端的性能優(yōu)化。只許一次操作,大大提高性能。

JS性能優(yōu)化的知識(shí)非常龐雜,這里我們來(lái)介紹幾種常用的性能優(yōu)化方式。 一、JS中的前端性能優(yōu)化原則:

多使用內(nèi)存、緩存等方法

減少CPU計(jì)算、減少網(wǎng)絡(luò)請(qǐng)求

二、針對(duì)上述兩項(xiàng)原則,我們可以從兩個(gè)方向入手來(lái)進(jìn)行前端的性能優(yōu)化。 1、加載資源優(yōu)化

靜態(tài)資源的壓縮合并


我們可以利用webpack等打包工具進(jìn)行資源的合并與壓縮操作,可以大大減小資源的大小,實(shí)現(xiàn)頁(yè)面更快的加載。

靜態(tài)資源緩存
當(dāng)瀏覽器發(fā)送請(qǐng)求時(shí),可以檢測(cè)該資源的最新版本是否存在于本地,若存在,則不進(jìn)行重新加載??梢酝ㄟ^(guò)鏈接名稱(chēng)控制緩存,當(dāng)緩存改變的時(shí)候,鏈接名稱(chēng)才會(huì)改變。

使用CDN讓資源加載更快
CDN可以對(duì)不同區(qū)域的網(wǎng)絡(luò)進(jìn)行優(yōu)化。例如用BootCDN進(jìn)行優(yōu)化的事例:

SSR后端渲染
使用SSR進(jìn)行后端渲染,將數(shù)據(jù)直接輸入到HTML中,而不需要先下載HTML頁(yè)面,再執(zhí)行AJAX獲取服務(wù)器端的數(shù)據(jù)。很早以前的jsp、php、asp都屬于后端渲染,現(xiàn)在Vue、React也提出了這樣的概念,經(jīng)測(cè)試表明,頁(yè)面的加載時(shí)間可以大大縮短。

2、渲染優(yōu)化

CSS放到header中,JS放到body最下面
(1)將CSS放在

部分:在渲染body部分時(shí),可以渲染已經(jīng)規(guī)定好樣式。若將CSS樣式放到要渲染的DOM節(jié)點(diǎn)之后,就會(huì)出現(xiàn)最開(kāi)始按照默認(rèn)形式渲染,執(zhí)行到css樣式又重新渲染。造成樣式跳轉(zhuǎn):用戶(hù)體驗(yàn)差;性能差:需渲染兩次。
正確使用方式如下:

若將6行放到9后面,就會(huì)出現(xiàn)重復(fù)加載現(xiàn)象。

(2)JS會(huì)阻塞頁(yè)面DOM的加載,若將JS放到body最下面,首先不會(huì)阻塞頁(yè)面渲染,可以將頁(yè)面全部渲染后再執(zhí)行js。其次可以拿到所有的標(biāo)簽,如果放在html上面可能拿不到標(biāo)簽,因?yàn)檫€沒(méi)有被渲染到。
錯(cuò)誤事例:加載執(zhí)行9行,阻塞第10行的執(zhí)行。

注意以該方式進(jìn)行異步加載時(shí)不會(huì)阻塞頁(yè)面的渲染,因?yàn)閕mg標(biāo)簽已經(jīng)渲染出來(lái),只是請(qǐng)求的異步加載內(nèi)容在加載。

圖片的懶加載
所謂懶加載,就是當(dāng)用戶(hù)下拉到該頁(yè)面時(shí)再加載圖片,而不是當(dāng)用戶(hù)打開(kāi)頁(yè)面就將所有圖片全部加載完畢。


在頁(yè)面渲染時(shí),將src傳入一個(gè)很小的圖片,真正的圖片地址放在自定義屬性data-lealsrc中,當(dāng)真正執(zhí)行時(shí),再將所需圖片加載進(jìn)來(lái)。

減少DOM查詢(xún),對(duì)DOM查詢(xún)做緩存
DOM操作是一種非常耗費(fèi)性能的操作,在寫(xiě)程序時(shí)要盡量減少DOM操作。


通過(guò)上面的兩種實(shí)現(xiàn)方式對(duì)比可以看出:未緩存DOM查詢(xún)時(shí),每次循環(huán)都要進(jìn)行DOM查詢(xún);緩存了DOM查詢(xún)時(shí),只需進(jìn)行一次DOM查詢(xún)操作,將數(shù)值保存在變量中使用即可。

合并DOM操作

向文檔中插入10個(gè)li標(biāo)簽,原始操作是有十次DOM插入操作,但是我們利用定義一個(gè)片段(frag),向片段中插入li,不會(huì)觸發(fā)DOM操作,最后將該片段插入到DOM中。只許一次DOM操作,大大提高性能。

時(shí)間節(jié)流

這個(gè)代碼實(shí)現(xiàn)的功能是:當(dāng)連續(xù)很快輸入時(shí),不需要每次抬起按鍵都執(zhí)行函數(shù),只有當(dāng)按鍵抬起超過(guò)100ms才執(zhí)行操作,可以減少事件操作,因?yàn)樵谶B續(xù)操作時(shí)會(huì)執(zhí)行很多計(jì)算,嚴(yán)重影響性能。

用DOMContentLoaded替代window.onload
window.onload:在頁(yè)面加載完畢才會(huì)執(zhí)行操作。
DOMContentLoaded:在頁(yè)面渲染完執(zhí)行操作,此時(shí)圖片、視頻等可能還未被加載完。

圖片、視頻等靜態(tài)資源大小參差不齊,加載完成時(shí)間又會(huì)有很大的差別,但html一般很小,加載時(shí)間很短,所以利用DOMContentLoaded可以顯著提高性能和用戶(hù)體驗(yàn)。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96137.html

相關(guān)文章

  • 前端性能優(yōu)化(三)——傳統(tǒng) JavaScript 優(yōu)化的誤區(qū)

    摘要:二模塊化誤區(qū)加快加載和執(zhí)行的速度,一直是前端優(yōu)化的一個(gè)熱點(diǎn)。結(jié)果文件減少,也達(dá)到了預(yù)期的效果。避免不必要的延遲。最后再根據(jù)文件的功能類(lèi)型,來(lái)決定是放在頁(yè)面的頭部還是尾部。 注:本文是純技術(shù)探討文,無(wú)圖無(wú)笑點(diǎn),希望您喜歡 一.前言 軟件行業(yè)極其缺乏前端人才這是圈內(nèi)的共識(shí)了,某種程度上講,同等水平前端的工資都要比后端高上不少,而圈內(nèi)的另一項(xiàng)共識(shí)則是——網(wǎng)頁(yè)是公司的臉面! 幾年前,谷歌的一項(xiàng)...

    UsherChen 評(píng)論0 收藏0
  • 前端資源系列(4)-前端學(xué)習(xí)資源分享&前端面試資源匯總

    摘要:特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 特意對(duì)前端學(xué)習(xí)資源做一個(gè)匯總,方便自己學(xué)習(xí)查閱參考,和好友們共同進(jìn)步。 本以為自己收藏的站點(diǎn)多,可以很快搞定,沒(méi)想到一入?yún)R總深似海。還有很多不足&遺漏的地方,歡迎補(bǔ)充。有錯(cuò)誤的地方,還請(qǐng)斧正... 托管: welcome to git,歡迎交流,感謝star 有好友反應(yīng)和斧正,會(huì)及時(shí)更新,平時(shí)業(yè)務(wù)工作時(shí)也會(huì)不定期更...

    princekin 評(píng)論0 收藏0
  • 前端優(yōu)化 - 收藏集 - 掘金

    摘要:雖然有著各種各樣的不同,但是相同的是,他們前端優(yōu)化不完全指南前端掘金篇幅可能有點(diǎn)長(zhǎng),我想先聊一聊閱讀的方式,我希望你閱讀的時(shí)候,能夠把我當(dāng)作你的競(jìng)爭(zhēng)對(duì)手,你的夢(mèng)想是超越我。 如何提升頁(yè)面渲染效率 - 前端 - 掘金Web頁(yè)面的性能 我們每天都會(huì)瀏覽很多的Web頁(yè)面,使用很多基于Web的應(yīng)用。這些站點(diǎn)看起來(lái)既不一樣,用途也都各有不同,有在線視頻,Social Media,新聞,郵件客戶(hù)端...

    VincentFF 評(píng)論0 收藏0
  • 前端性能優(yōu)化之--頁(yè)面渲染優(yōu)化全面解析

    摘要:下面我們撇開(kāi)網(wǎng)絡(luò)方面的優(yōu)化,只分析靜態(tài)資源方面的優(yōu)化。不過(guò),也會(huì)阻止的構(gòu)建和延緩網(wǎng)頁(yè)渲染。未優(yōu)化正常加載優(yōu)化后異步加載根據(jù)上面的分析,我們可以清楚的認(rèn)識(shí)到,非必要優(yōu)先加載的,選擇異步加載是最優(yōu)選擇。 為什么做優(yōu)化 經(jīng)典問(wèn)題:白屏?xí)r間過(guò)長(zhǎng),用戶(hù)體驗(yàn)差產(chǎn)生的原因:網(wǎng)絡(luò)問(wèn)題、關(guān)鍵渲染路徑(CRP)問(wèn)題 怎么做優(yōu)化 如何做好優(yōu)化呢,網(wǎng)上隨便一搜,就有很多優(yōu)化總結(jié),無(wú)非就是網(wǎng)絡(luò)優(yōu)化、靜態(tài)資源(h...

    MadPecker 評(píng)論0 收藏0
  • 前端性能優(yōu)化之--頁(yè)面渲染優(yōu)化全面解析

    摘要:下面我們撇開(kāi)網(wǎng)絡(luò)方面的優(yōu)化,只分析靜態(tài)資源方面的優(yōu)化。不過(guò),也會(huì)阻止的構(gòu)建和延緩網(wǎng)頁(yè)渲染。未優(yōu)化正常加載優(yōu)化后異步加載根據(jù)上面的分析,我們可以清楚的認(rèn)識(shí)到,非必要優(yōu)先加載的,選擇異步加載是最優(yōu)選擇。 為什么做優(yōu)化 經(jīng)典問(wèn)題:白屏?xí)r間過(guò)長(zhǎng),用戶(hù)體驗(yàn)差產(chǎn)生的原因:網(wǎng)絡(luò)問(wèn)題、關(guān)鍵渲染路徑(CRP)問(wèn)題 怎么做優(yōu)化 如何做好優(yōu)化呢,網(wǎng)上隨便一搜,就有很多優(yōu)化總結(jié),無(wú)非就是網(wǎng)絡(luò)優(yōu)化、靜態(tài)資源(h...

    gghyoo 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lewif

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<