前端性能優(yōu)化筆記

一、性能優(yōu)化的原則

  • 多使用內(nèi)存、緩存
  • 減少CPU計(jì)算、減少網(wǎng)絡(luò)請(qǐng)求

二、 性能優(yōu)化入手點(diǎn)
2.1 頁(yè)面和靜態(tài)資源的加載

  • 靜態(tài)資源的壓縮合并
    <script src="a.js"></script>
    <script src="b.js"></script>

    構(gòu)建工具合并 ==> <script src="ab.js"></script>
    
  • 靜態(tài)資源緩存
    靜態(tài)資源由瀏覽加載一次后會(huì)有緩存谐丢,只要靜態(tài)資源名字不改變,則訪問(wèn)瀏覽器的緩存蚓让。只有內(nèi)容改變的時(shí)候乾忱,靜態(tài)資源名字才會(huì)改變。

  • 使用cdn讓資源加載更快
    常用的cdn服務(wù)百度CDN庫(kù)历极、360的CDN服務(wù)窄瘟、新浪公共CDN庫(kù)BootCDN趟卸、又拍云CDN庫(kù)蹄葱、CDNJS.CN開(kāi)放靜態(tài)文件CDN庫(kù)

  • 使用ssr后端渲染
    好處:數(shù)據(jù)直接輸出到html中進(jìn)行渲染锄列,而不需要使用ajax發(fā)送數(shù)據(jù)請(qǐng)求得到數(shù)據(jù)后再進(jìn)行渲染图云。

2.2 頁(yè)面的渲染

  • css放在頭部,js放在底部邻邮,因?yàn)閖s會(huì)阻塞頁(yè)面渲染
    <html>
    <head>
    <link rel="stylesheet" href="main.css">
    </head>
    <body>
    <script src="main.js"></script>
    </body>
    </html>

  • 懶加載(圖片懶加載竣况、下拉加載更多)
    實(shí)現(xiàn)原理:使用尺寸較小的圖片作為預(yù)覽圖,在img的自定義數(shù)據(jù)屬性data-realsrc里存儲(chǔ)圖片的真實(shí)src鏈接筒严,當(dāng)頁(yè)面渲染到圖片時(shí)再進(jìn)行src的替換丹泉。



    <script>
    var img = document.getElementById('lazyImg')
    img.src = img.getAttribute('data-realsrc')
    </script>

  • 減少dom查詢,對(duì)dom查詢做緩存
    // 未優(yōu)化
    for (var i = 0; i < document.getElementById('p').length; i ++) {
    // something to do
    }

    // 優(yōu)化后
    var pList = document.getElementById('p')
    for (var i = 0; pList.length; i ++) {
      // something to do
    }
    
  • 減少dom操作鸭蛙,多個(gè)操作盡量合并在一起執(zhí)行
    var listNode = document.getElementById('list')
    // 要插入10個(gè)li標(biāo)簽
    var frag = document.createDocumentFragment()
    for (var x = 0; x < 10; x++) {
    li = document.createElement('li')
    li.innerHTML = 'List item' + x
    frag.appendChild(li)
    }
    listNode.appendChild(frag)

  • 事件節(jié)流
    實(shí)現(xiàn)原理:設(shè)置事件的延遲執(zhí)行摹恨,當(dāng)用戶快速持續(xù)地觸發(fā)keyup事件時(shí),只有最后一次觸發(fā)才會(huì)執(zhí)行娶视。
    var input = document.getElementById('input')
    var timer
    input.addEventListener('keyup', function() {
    if (timer) clearTimeout(timer)
    timer = setTimeout(function() {
    // 觸發(fā)事件
    }, 100)
    })

  • 盡早執(zhí)行操作
    window.addEventListener('load', function() {
    // 頁(yè)面的全部資源加載完才會(huì)執(zhí)行晒哄,包括圖片、視頻等,等待時(shí)間可能比較久
    })

    window.addEventListener('DOMContentLoaded', function() {
      // 渲染完即可執(zhí)行揩晴,此時(shí)圖片勋陪、視頻可能還沒(méi)有加載完贪磺。大部分框架使用此方法
    })
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末硫兰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子寒锚,更是在濱河造成了極大的恐慌劫映,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,946評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件刹前,死亡現(xiàn)場(chǎng)離奇詭異泳赋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)喇喉,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,336評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門祖今,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人拣技,你說(shuō)我怎么就攤上這事千诬。” “怎么了膏斤?”我有些...
    開(kāi)封第一講書人閱讀 169,716評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵徐绑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我莫辨,道長(zhǎng)傲茄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 60,222評(píng)論 1 300
  • 正文 為了忘掉前任沮榜,我火速辦了婚禮盘榨,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蟆融。我一直安慰自己较曼,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,223評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布振愿。 她就那樣靜靜地躺著捷犹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪冕末。 梳的紋絲不亂的頭發(fā)上萍歉,一...
    開(kāi)封第一講書人閱讀 52,807評(píng)論 1 314
  • 那天,我揣著相機(jī)與錄音档桃,去河邊找鬼枪孩。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蔑舞。 我是一名探鬼主播拒担,決...
    沈念sama閱讀 41,235評(píng)論 3 424
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼攻询!你這毒婦竟也來(lái)了从撼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書人閱讀 40,189評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钧栖,失蹤者是張志新(化名)和其女友劉穎低零,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體拯杠,經(jīng)...
    沈念sama閱讀 46,712評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡掏婶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,775評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了潭陪。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雄妥。...
    茶點(diǎn)故事閱讀 40,926評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖依溯,靈堂內(nèi)的尸體忽然破棺而出老厌,到底是詐尸還是另有隱情,我是刑警寧澤誓沸,帶...
    沈念sama閱讀 36,580評(píng)論 5 351
  • 正文 年R本政府宣布梅桩,位于F島的核電站,受9級(jí)特大地震影響拜隧,放射性物質(zhì)發(fā)生泄漏宿百。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,259評(píng)論 3 336
  • 文/蒙蒙 一洪添、第九天 我趴在偏房一處隱蔽的房頂上張望垦页。 院中可真熱鬧,春花似錦干奢、人聲如沸痊焊。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 32,750評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)薄啥。三九已至,卻和暖如春逛尚,著一層夾襖步出監(jiān)牢的瞬間垄惧,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,867評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工绰寞, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留到逊,地道東北人铣口。 一個(gè)月前我還...
    沈念sama閱讀 49,368評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像觉壶,于是被迫代替她去往敵國(guó)和親脑题。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,930評(píng)論 2 361

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