總結(jié)一些簡(jiǎn)單的前端性能優(yōu)化

前端性能優(yōu)化大致分為以下幾個(gè)點(diǎn)

  • 網(wǎng)絡(luò)加載類
  • 頁(yè)面渲染類
  • 緩存類
  • 圖片類
  • 腳本類
  • 渲染類
  • 架構(gòu)協(xié)議類

分別以一句話簡(jiǎn)單描述

網(wǎng)絡(luò)加載類

  1. 減少 HTTP 資源請(qǐng)求次數(shù)和單個(gè)請(qǐng)求大小,盡可能合并資源(靜態(tài)資源圖片,JavaScript或css代碼);
  2. 將JavaScript和css放到外部文件中(在 HTML 文件中引用外部資源可以有效利用瀏覽器的靜態(tài)資源緩存)
  3. 避免頁(yè)面中空的 href 和 src當(dāng)標(biāo)簽的 href 屬性為空(瀏覽器在渲染的過(guò)程中仍會(huì)將 href 屬性或 src 屬性中的空內(nèi)容進(jìn)行加載,直至加載失敗,這樣就阻塞了頁(yè)面中其他資源的下載進(jìn)程,而且最終加載到的內(nèi)容是無(wú)效的,因此要盡量避免)
  4. 減少頁(yè)面重定向
  5. 使用靜態(tài)資源 CDN 來(lái)存儲(chǔ)文件如果條件允許,可以利用 CDN 網(wǎng)絡(luò)加快同一個(gè)地理區(qū)域內(nèi)重復(fù)靜態(tài)資源文件的響應(yīng)下載速度,縮短資源請(qǐng)求時(shí)間。
  6. 使用可緩存的ajax。使用get方法效率會(huì)比post方法高。減少cookie大小
$.ajax({
    url : url,
    type : 'get',
    cache : true, //推薦使用緩存
    data : {},
    success (){//...},
    error (){//...}
});

頁(yè)面渲染類

  1. style放置于頁(yè)面頂部?jī)?yōu)先加載, script放置于html底部,減少頁(yè)面的重繪和回流(頁(yè)面渲染原理
  2. 盡量預(yù)先設(shè)定圖片等大小在加載大量的圖片元素時(shí),盡量預(yù)先限定圖片的尺寸大小,否則在圖片加載過(guò)程中會(huì)更新圖片的排版信息,產(chǎn)生大量的重排
  3. 盡可能的是dom層級(jí)減少, 盡量減少使用JS動(dòng)畫JS 直接操作 DOM 極容易引起頁(yè)面的重排。
  4. 盡量避免在選擇器末尾添加通配符(渲染樹(shù)的過(guò)程是從右到左的逆向匹配)

緩存類

  1. 為 HTML 指定 Cache-Control 或 Expires,為 HTML 內(nèi)容設(shè)置 Cache-Control 或 Expires 可以將 HTML 內(nèi)容緩存起來(lái),避免頻繁向服務(wù)器端發(fā)送請(qǐng)求
<meta http-equiv="Cache-Control" content="max-age=7200">
<meta http-equiv="Expires" content="Mon,20Jul201623:00:00GMT">
  1. 合理設(shè)置 Etag 和 Last-Modified合理設(shè)置 Etag 和 Last-Modified 使用瀏覽器緩存,對(duì)于未修改的文件,靜態(tài)資源服務(wù)器會(huì)向?yàn)g覽器端返回304,讓瀏覽器從緩存中讀取文件,減少 Web 資源下載的帶寬消耗并降低服務(wù)器負(fù)載。
<meta http-equiv="last-modified" content="Sun,05 Nov 2017 13:45:57 GMT">

圖片類

  1. 使用雪碧圖減少網(wǎng)絡(luò)請(qǐng)求,使用較小的圖
  2. 圖片懶加載

腳本類

  1. 盡量是用id選擇器,因?yàn)閕d選擇器選擇更快
  2. 使用事件委托來(lái)綁定事件
  3. 設(shè)置函數(shù)節(jié)流,函數(shù)防抖
  4. 使用es6更高效

渲染類

  1. 移動(dòng)端使用Viewport可以加快渲染
<!--設(shè)置viewport不縮放-->
<meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">

  1. 避免各種形式重排重繪,頁(yè)面的重排重繪很耗性能
  2. 在 DOM 渲染樹(shù)生成后的布局渲染階段,使用 float 的元素布局計(jì)算比較耗性能
  3. 不濫用 web 字體或過(guò)多 font-size 聲明過(guò)多的 font-size 聲明會(huì)增加字體的大小計(jì)算

架構(gòu)協(xié)議類

  1. 使用后端數(shù)據(jù)渲染的方式可以加快頁(yè)面內(nèi)容的渲染展示

更多請(qǐng)?jiān)L問(wèn)https://github.com/CodingMeUp/some_notes/issues/2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 圍繞前端的性能多如牛毛,涉及到方方面面,以我我們將圍繞PC瀏覽器和移動(dòng)端瀏覽器的優(yōu)化策略進(jìn)行羅列注意,是羅列不是展...
    流動(dòng)碼文閱讀 743評(píng)論 0 0
  • 一、PC端優(yōu)化策略 主要包括網(wǎng)絡(luò)加載類、頁(yè)面渲染類、CSS優(yōu)化類、JavaScript執(zhí)行類、緩存類、圖片類、架構(gòu)...
    puxiaotaoc閱讀 24,902評(píng)論 6 56
  • 前言 前端的工作并不僅僅是實(shí)現(xiàn)「視覺(jué)&交互稿」,想要開(kāi)發(fā)一個(gè)高性能易維護(hù)的「完美」站點(diǎn)并未易事,針對(duì)前端的性能優(yōu)化...
    木羽zwwill閱讀 716評(píng)論 0 4
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,654評(píng)論 1 32
  • 前端性能優(yōu)化資料整理 頁(yè)面性能差的直接后果是用戶需要等待,而等待,尤其是不確定要多長(zhǎng)時(shí)間的等待會(huì)給用戶帶來(lái)焦慮,為...
    飄零之雪閱讀 890評(píng)論 2 3

友情鏈接更多精彩內(nèi)容