小冊(cè)閱讀 十六-性能優(yōu)化

前端性能的優(yōu)化,最直接的體現(xiàn)在用戶的體驗(yàn)上。當(dāng)用戶打開一個(gè)站點(diǎn)時(shí),加載時(shí)間在十幾秒以上,肯定要瘋了。以下是自己的見解加解讀小冊(cè)內(nèi)容。強(qiáng)烈建議大家去看看這本掘金小冊(cè),點(diǎn)擊自動(dòng)跳轉(zhuǎn)

  • 自己知道的性能優(yōu)化。
  1. 圖片處理(svg,icon等)
  2. 靜態(tài)資源使用CDN
  3. 圖片/視頻懶加載
  4. 文件按需加載
  5. 代碼/css壓縮
    ...
  • 小冊(cè)介紹性能優(yōu)化要點(diǎn)
  1. 圖片優(yōu)化
  2. DNS預(yù)解析
  3. 節(jié)流
  4. 防抖
  5. 預(yù)加載
  6. 預(yù)渲染
  7. 懶執(zhí)行
  8. 懶加載
  9. CDN

圖片處理


  • 修飾類效果不用圖片,修飾類的圖片可以用CSS去代替,例如 箭頭,圓角,三角形等,具體做法可自行g(shù)oogle查看以下。
  • 一些圖標(biāo)類型的小圖片,盡量用font-icon 去表示。
  • 使用精靈圖/雪碧圖(Sprite),然后利用圖片的定位取到對(duì)應(yīng)的圖。
  • 小圖片使用base64轉(zhuǎn)換。這個(gè)在目前vue-cli的webpack配置已經(jīng)自動(dòng)實(shí)現(xiàn),可以進(jìn)行在webpack中配置大小。
  • 商品的縮略圖,尤其是移動(dòng)端,直接讓設(shè)計(jì)師按照提供相同大小的圖片,盡量不要用css去控制圖片的大小。

靜態(tài)資源CDN(內(nèi)容分發(fā)網(wǎng)絡(luò) content delivery network)


假設(shè)A地部署web應(yīng)用,但是B地的人要去訪問該站點(diǎn),瀏覽器根據(jù)域名解析再通過DNS找到A地的服務(wù)器地址,然后去請(qǐng)求該站點(diǎn)的資源再返回B地,中間會(huì)浪費(fèi)一些時(shí)間,盡管超級(jí)短。那為什么不在B地使用服務(wù)器緩存靜態(tài)資源呢,這樣請(qǐng)求的時(shí)間肯定就減少了許多。這就是CDN的一個(gè)基本原理,就是盡可能多的在用戶的附近部署靜態(tài)資源服務(wù)器,用戶訪問時(shí)就會(huì)直接訪問到,自然訪問速度就上來了。

  • 靜態(tài)資源使用CDN緩存
  • CDN域名盡量與主站域名不同,否則會(huì)帶上cookie,浪費(fèi)流量

圖片懶加載


原理
  • 將要顯示的圖片/視頻地址先保存在對(duì)應(yīng) 標(biāo)簽 的任一屬性上,標(biāo)簽先給默認(rèn)你地址,然后該標(biāo)簽在可視區(qū)域時(shí),就替換掉默認(rèn)地址。
注意點(diǎn)
  • 滾動(dòng)防抖
  • 判斷圖片/視頻是否顯示成功

目前來說,大部分的開發(fā)都不會(huì)自己去實(shí)現(xiàn)一個(gè),由于有很好的插件來實(shí)現(xiàn)。vue可以使用 vue-lazyload

路由,文件按需加載(主要依靠webpack)


當(dāng)打包構(gòu)建應(yīng)用時(shí),JavaScript 包會(huì)變得非常大,影響頁面加載。如果我們能把不同路由對(duì)應(yīng)的組件分割成不同的代碼塊,然后當(dāng)路由被訪問的時(shí)候才加載對(duì)應(yīng)組件,這樣就更加高效了。
路由按需加載

代碼壓縮,css預(yù)處理器


如果使用腳手架搭建起來的項(xiàng)目,webpack已經(jīng)幫我們配置好了壓縮的方式引入了各種相應(yīng)的loader,我們直接用就好。

css預(yù)處理器 sass less stylus
  • 更加方便的使用css
  • 定義變量,引用,嵌套,作用域
  • 本質(zhì)上還是css,注意嵌套層級(jí),最好不超過4級(jí)。

防抖 節(jié)流 操作鎖


  • 防抖:事件一直觸發(fā),停止了才去執(zhí)行相應(yīng)代碼。(scroll,input,change事件等)
  • 節(jié)流:事件一直觸發(fā),隔一段時(shí)間去執(zhí)行一次。(input事件,change事件等)
  • 操作鎖: 避免重復(fù)執(zhí)行事件時(shí),可以設(shè)置一個(gè)鎖,直到返回結(jié)果才解鎖,禁止多次請(qǐng)求。

DNS預(yù)解析 詳情請(qǐng)點(diǎn)擊

?著作權(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),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 前言 對(duì)于前端的性能話題,從來都沒有斷絕過。因?yàn)檫@個(gè)東西沒有最好,只有更好。而且往往也是業(yè)務(wù)的繁雜程度去決定優(yōu)化程...
    Layzimo閱讀 28,853評(píng)論 2 51
  • 前端開發(fā)面試題 面試題目: 根據(jù)你的等級(jí)和職位的變化,入門級(jí)到專家級(jí),廣度和深度都會(huì)有所增加。 題目類型: 理論知...
    怡寶丶閱讀 2,686評(píng)論 0 7
  • 前端開發(fā)面試題 <a name='preface'>前言</a> 只看問題點(diǎn)這里 看全部問題和答案點(diǎn)這里 本文由我...
    自you是敏感詞閱讀 904評(píng)論 0 3
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML標(biāo)準(zhǔn)。 注意:講述HT...
    kismetajun閱讀 28,824評(píng)論 1 45
  • 03309吳娟 剛拿到這本書時(shí),被畫風(fēng)所吸引,邊邊角角,還以為是蹭壞了,其實(shí)就是那種“舊筆記本”的畫風(fēng)。也被封面可...
    真的做了蝴蝶閱讀 701評(píng)論 0 1

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