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 這種后代得匹配需盡量少用
? ??