前端性能優(yōu)化小結

1,減少頁面加載時候得http請求

? ? 首先項目中無用得圖片或者視頻 音頻資源應 及時刪除,頁面中小圖如 導航小圖標 在線離線狀態(tài)等可以整合成雪碧圖。再者像頁面得導航圖標之類得 可以可用 字體圖標 ,最后可以合并css 和js? 當前前提是要保證頁面得正常渲染和 js 邏輯得正常運行 ,不能一味得大鍋燉合并

2,使用CDN?

? ? 一些常用得插件和組件可以使用 正規(guī)得 穩(wěn)定得cdn 地址來減輕自己服務器得壓力

3,減少cookie得使用和注意其大小

?4,減少重繪(repaint)和回流(reflow)

? ? 頻繁觸發(fā)重繪和回流,會導致UI得頻繁渲染,最終導致頁面加載緩慢和js得緩慢,回流必然會引起重繪,而重繪不一定會引起回流

當render樹得一部分因為元素得尺寸 ,布局,隱藏等改變而需要重新構建,我們稱之為回流

當render元素得需要更改一些屬性如顏色等我們稱之重繪

首先我要大致了解一下當瀏覽器得到頁面之后得大致渲染過程

? ? 1,解析HTML 構建DOM樹(包括發(fā)起http請求來獲取內容)

? ? 2,解析css

? ? 3,合并DOM樹和css規(guī)則樹 然后生成render 樹

? ? 4,布局render樹 計算元素得大小,位置

? ? 5,繪制render樹 生成頁面信息

構建CSSOM樹時 瀏覽器會根據(jù)優(yōu)先級從低到高得順序來設置這個節(jié)點得屬性,從全局屬性開始? ?一直尋到這個元素得具體屬性

所以需要注意得有

????1,將多次頁面得樣式改變合并為一次操作 如竟然避免一個頁面 即有外部得css又有style 樣式 還有行間屬性?

????2,將某個元素需要頻繁改動其位置時 可以設置其脫離文檔流 從而不會影響其他元素

????3,隊友一個有多個層次得dom節(jié)點 可以等構建完之后再插入頁面中

????4,改變元素之前可以先設置display為none 然后等整個操作完再 設置display:none

????5,img標簽可以先預設置其大小

5,刪除不需要得腳本和盡量把腳本放在頁面底部?

? ??腳本文件在下載時,在其下載完成、解析執(zhí)行完畢之前,并不會下載任何其他的內容,因為瀏覽器并不知道腳本是否會操作頁面的內容;其次,后面加載的腳本可能會依賴前面的腳本 ,如果并行下載,后面的腳本可能會先下載完并執(zhí)行,產生錯誤。但是如果確定某個腳本不會操作頁面 可以設置defer 來延遲腳本得執(zhí)行,或者采用動態(tài)添加script 到頁面

6,減少頁面定時器得使用 和及時關閉定時器

7,注意某個元素得樣式得命名

? ? 因為瀏覽器時從右向左匹配選擇符的,所以像#div>a 這種后代得匹配需盡量少用

? ??

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

相關閱讀更多精彩內容

友情鏈接更多精彩內容