關(guān)于前端性能優(yōu)化

前端性能優(yōu)化主要關(guān)注的點(diǎn)就是速度,具體分為加載性能運(yùn)行性能。

加載性能

檢查加載性能可以參考window.performance的使用。

包括白屏?xí)r間,請求/響應(yīng)時間,dom加載時間等。

應(yīng)對策略基本需要考慮文件打包、gzip壓縮、cdn引入第三方庫、js代碼懶加載、圖片懶加載、圖片質(zhì)量壓縮、瀏覽器緩存等。
還有就是如果對SEO要求比較高(大型資訊類網(wǎng)頁)可以考慮使用SSR(服務(wù)端渲染)。

運(yùn)行性能

檢查運(yùn)行性能可以使用chrome開發(fā)者工具上的performance->點(diǎn)開rendering,
勾選Paint flashing(高亮重繪區(qū)域)和Frame Rendering Stats(顯示幀渲染信息),然后瀏覽量頁面就可以看到網(wǎng)頁渲染變化。

應(yīng)對策略,避免頻繁操作dom,現(xiàn)在的mvvm框架(vue/react)采用數(shù)據(jù)驅(qū)動的dom的方式,可以幫助我們合并多余的dom操作,提高渲染性能。

js循環(huán)數(shù)組應(yīng)該先循環(huán)第一級再循環(huán)第二級,性能較好。
條件非常多的情況不要使用if-else,使用對象key-value封裝的形式比較好。

高頻觸發(fā)的事件回調(diào)需要考慮函數(shù)防抖和節(jié)流(scroll,input等)。

盡量避免一幀一幀的實(shí)現(xiàn)動畫,優(yōu)先使用css3動畫效果。transform 和 opacity不會觸發(fā)重排和重繪,只會觸發(fā)合成器處理。


如果使用css3動畫效果還是有體驗(yàn)問題,可以考慮啟用GPU硬件加速(使用GPU渲染)。默認(rèn)頁面渲染是靠瀏覽器的渲染引擎的,一些復(fù)雜的動畫(如3d變幻等)瀏覽器廠商會支持自動開啟GPU硬件加速。

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

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

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