web前端性能優(yōu)化——如何提高頁面加載速度

什么叫web前端性能優(yōu)化果漾?

  • 使用戶覺得頁面加載快猛遍!
  • 使用戶覺得頁面加載快!
  • 使用戶覺得頁面加載快效斑!

重要的話說三遍B蛐摺T住!

(接下來總結(jié)下前端提高頁面加載速度的一些方法畜普。)

前端性能優(yōu)化

思路:分析一個(gè)頁面從輸入 URL 到頁面加載顯示完成的所有步驟期丰,采用分治法逐步優(yōu)化。

1.優(yōu)化DNS查詢

減少域名:盡量把所有的資源放在一個(gè)域名下吃挑。一個(gè)域名同時(shí)可以發(fā)4(IE8)或8個(gè)請(qǐng)求(Chrome)钝荡。請(qǐng)求文件少,用1個(gè)域名舶衬,文件多用多個(gè)域名埠通。與3權(quán)衡。

2.優(yōu)化TCP協(xié)議

  • TCP連接復(fù)用逛犹,使用keep-alive:連接回復(fù)加上請(qǐng)求頭:keep-alive端辱。第一次請(qǐng)求不斷開,第二次請(qǐng)求復(fù)用虽画。
  • 使用http 2.0版本:多路復(fù)用掠手,連接復(fù)用率會(huì)更高

3. 優(yōu)化發(fā)送HTTP請(qǐng)求

  • 合并JS或CSS文件
  • inline image:使用data:url scheme來內(nèi)連圖片
  • 減小cookie體積,每個(gè)請(qǐng)求都會(huì)附帶cookie狸捕,所以不要濫用cookie喷鸽。
  • 合理使用CasheControl代替發(fā)送HTTP請(qǐng)求
  • 同時(shí)發(fā)送多個(gè)請(qǐng)求(瀏覽器自帶)IE8可以同時(shí)請(qǐng)求下載4個(gè)的css文件,Chrome可以同時(shí)請(qǐng)求下載8個(gè) 灸拍。

4.優(yōu)化接受響應(yīng)

  • 設(shè)置Etags:瀏覽器重復(fù)與請(qǐng)求服務(wù)器一樣的文件做祝,ETag響應(yīng)304。
  • Gzip壓縮大文件 使用macos gzip鸡岗,npm server gzip gzip 文件名
    其響應(yīng)頭為Content-Encodinging:gzip混槐,先壓縮接收到再解壓縮。缺點(diǎn):耗費(fèi)瀏覽器CPU轩性,權(quán)衡

5.優(yōu)化DOCTYPE

  • 不能不寫声登,不能寫錯(cuò)

6.優(yōu)化CSS、JS請(qǐng)求

  • 使用CDN:用CDN請(qǐng)求靜態(tài)資源同時(shí)可以增大同時(shí)下載數(shù)量,內(nèi)容分發(fā)網(wǎng)絡(luò)(CDN)可以使請(qǐng)求總時(shí)間降低悯嗓,也可以減少cookie
  • CSS放在head里:使其盡早下載件舵,因?yàn)閏hrome需要下載完所有的css后才渲染頁面
  • JS放在body里的最后:盡早顯示整個(gè)頁面,獲取節(jié)點(diǎn)脯厨。

7.使用懶加載

  • 組件懶加載
const xxx =()=>import('./components/xxx.vue')
  • 路由懶加載

8.優(yōu)化用戶體驗(yàn)

  • 用戶看到哪些內(nèi)容就請(qǐng)求哪些內(nèi)容
  • 加一個(gè)loading動(dòng)畫用戶會(huì)感覺時(shí)間變快

9.減少監(jiān)聽器铅祸,使用事件委托

    <body>
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li>4</li>
        </ul>
        <script>
            let liList = document.querySelectorAll('li')

            // liList[0].onclick = ()=>console.log(1)
            // liList[1].onclick = ()=>console.log(2)
            // liList[2].onclick = ()=>console.log(3)
            // liList[3].onclick = ()=>console.log(4)
            //法一:監(jiān)聽太多

            let ul = document.querySelector('ul')

            ul.onclick = (e) => {
                if (e.target.tagName === 'LI') {
                    console.log(e.target.innerText)

                }
            }//法二:減少監(jiān)聽,采用事件委托
        </script>
    </body>

10.優(yōu)化圖片大小

11.減少或合并DOM操作或使用虛擬DOM

// 不好的方式
var elem = $('#elem');
for (var i = 0; i < 100; i++) {
 elem.append('<li>element '+i+'</li>');
}

// 好的方式
var elem = $('#elem' ),
arr = [];
for (var i = 0;  i < 100; i++) {
  arr.push('<li>element ' +i+'</li>' );
}
elem.append(arr. join(''));

12.對(duì)大量數(shù)據(jù)計(jì)算使用緩存

// data.length === 100000
   for(var i = 0;i < data.length;i++){
     // do something...
   }
   //上面的代碼沒有下面的好
   for(var i = 0,len = data.length;i < len;i++){
     // do something...
   }

13.使用setTimeout降低調(diào)用接口頻率

參考文章: 雅虎前端優(yōu)化的35條軍規(guī)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末合武,一起剝皮案震驚了整個(gè)濱河市临梗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌稼跳,老刑警劉巖盟庞,帶你破解...
    沈念sama閱讀 218,640評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異汤善,居然都是意外死亡茫经,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門萎津,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人抹镊,你說我怎么就攤上這事锉屈。” “怎么了垮耳?”我有些...
    開封第一講書人閱讀 165,011評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵颈渊,是天一觀的道長。 經(jīng)常有香客問我终佛,道長俊嗽,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,755評(píng)論 1 294
  • 正文 為了忘掉前任铃彰,我火速辦了婚禮绍豁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘牙捉。我一直安慰自己竹揍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,774評(píng)論 6 392
  • 文/花漫 我一把揭開白布邪铲。 她就那樣靜靜地躺著芬位,像睡著了一般。 火紅的嫁衣襯著肌膚如雪带到。 梳的紋絲不亂的頭發(fā)上昧碉,一...
    開封第一講書人閱讀 51,610評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼被饿。 笑死四康,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的锹漱。 我是一名探鬼主播箭养,決...
    沈念sama閱讀 40,352評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哥牍!你這毒婦竟也來了毕泌?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,257評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤嗅辣,失蹤者是張志新(化名)和其女友劉穎撼泛,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體澡谭,經(jīng)...
    沈念sama閱讀 45,717評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愿题,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,894評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蛙奖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片潘酗。...
    茶點(diǎn)故事閱讀 40,021評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖雁仲,靈堂內(nèi)的尸體忽然破棺而出仔夺,到底是詐尸還是另有隱情,我是刑警寧澤攒砖,帶...
    沈念sama閱讀 35,735評(píng)論 5 346
  • 正文 年R本政府宣布缸兔,位于F島的核電站,受9級(jí)特大地震影響吹艇,放射性物質(zhì)發(fā)生泄漏惰蜜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,354評(píng)論 3 330
  • 文/蒙蒙 一受神、第九天 我趴在偏房一處隱蔽的房頂上張望抛猖。 院中可真熱鬧,春花似錦鼻听、人聲如沸樟结。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瓢宦。三九已至,卻和暖如春灰羽,著一層夾襖步出監(jiān)牢的瞬間驮履,已是汗流浹背鱼辙。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留玫镐,地道東北人倒戏。 一個(gè)月前我還...
    沈念sama閱讀 48,224評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像恐似,于是被迫代替她去往敵國和親杜跷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,974評(píng)論 2 355

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