前端性能优化之浏览器渲染原理和关键渲染路径、复合线程、图层及优化、JS 开销及优化和 HTML 和 CSS 优化
生活随笔
收集整理的這篇文章主要介紹了
前端性能优化之浏览器渲染原理和关键渲染路径、复合线程、图层及优化、JS 开销及优化和 HTML 和 CSS 优化
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
一、瀏覽器渲染原理和關(guān)鍵渲染路徑
JavaScript -> Style -> Layout -> Paint -> Composite。
- 渲染樹只包含網(wǎng)頁需要的節(jié)點
- 布局計算每個節(jié)點精確的位置和大寫,盒模型
- 繪制是像素化每個節(jié)點的過程
- 添加、刪除元素
- 操作 styles
- display: none
- offsetLeft、scrollTop、clientWidth
- 移動元素位置
- 修改瀏覽器大小、字體大小
- 避免回流
- 讀寫分離
二、復(fù)合線程、圖層及優(yōu)化
- 將頁面拆分圖層進行繪制再進行復(fù)合
- 利用 DevTools 了解網(wǎng)頁的圖層拆分情況
- 哪些樣式僅影響復(fù)合
- 利用 DevTools 識別 paint 的瓶頸
- 利用 will-change 創(chuàng)建新的圖層
- requestIdleCallback 的問題
- 通過 rAF 模擬 rIC
三、JS 開銷及優(yōu)化
- Code splitting 代碼拆分,按需加載
- Tree shaking 代碼減重
- 避免長任務(wù)
- 避免超過 1KB 的行間腳本
- 使用 rAF 和 rIc 進行時間調(diào)度
- 腳本流
- 字節(jié)碼緩存
- 懶解析
- 源碼 -> 抽象語法樹 -> 字節(jié)碼 Bytecode -> 機器碼
- 編譯過程會進行優(yōu)化
- 運行時可能發(fā)生反優(yōu)化
- lazy parsing 懶解析、eager parsing 饑餓解析
- 利用 Optimize.js 優(yōu)化初次加載時間
- 以相同順序初始化對象成員,避免隱藏類的調(diào)整
- 實例化后避免添加新屬性
- 盡量使用 Array 代替 array-like 對象
- 避免讀取超過數(shù)組的長度
- 避免元素類型轉(zhuǎn)換
四、HTML 和 CSS 優(yōu)化
- 減小 iframes 使用
- 避免 table 布局
- 壓縮空白符
- 刪除注釋
- 避免節(jié)點深層級嵌套
- CSS 和 Javascript 盡量外鏈
- 刪除元素默認屬性
- 降低 CSS 對渲染的阻塞
- 利用 GPU 進行完成動畫
- 使用 contain 屬性
- 使用 font-display 屬性
總結(jié)
以上是生活随笔為你收集整理的前端性能优化之浏览器渲染原理和关键渲染路径、复合线程、图层及优化、JS 开销及优化和 HTML 和 CSS 优化的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机上应用锁,电脑应用锁
- 下一篇: 2017年html5行业报告,云适配发布