原文地址https://zhuanlan.zhihu.com/p/25176904?utm_source=wechat_session&utm_medium=social&utm_member=MzFiZGQwMmUwMGNjYjNlYmJkMWY4MmZjMTY4MjdlZmY%3D%0Acss
概述html
熊D注:鑑於第 1 條簡單修改了一下標題
優化指南前端
加載過程是最爲耗時的過程,可能會佔到總耗時的 80% 時間,所以是優化的重點html5
由於手機瀏覽器同時響應請求爲 4 個請求(Android 支持4個,iOS 5 後可支持 6 個),因此要儘可能減小頁面的請求數,首次加載同時請求數不能超過 4 個css3
使用緩存能夠減小向服務器的請求數,節省加載時間,因此全部靜態資源都要在服務器端設置緩存,而且儘可能使用長 Cache(長 Cache 資源的更新可以使用時間戳)git
熊D注:也許使用 MD5 指紋更加可靠
減小資源大小能夠加快網頁顯示速度,因此要對 HTML、CSS、JavaScript 等進行代碼壓縮,並在服務器端設置 GZipgithub
寫在 HTML 頭部的 JavaScript(無異步),和寫在 HTML 標籤中的 Style 會阻塞頁面的渲染,所以 CSS 放在頁面頭部並使用 Link 方式引入,避免在 HTML 標籤中寫 Style,JavaScript 放在頁面尾部或使用異步方式加載。web
熊D注:即便用 async 和 defer 屬性
首屏的快速顯示,能夠大大提高用戶對頁面速度的感知,所以應儘可能針對首屏的快速顯示作優化正則表達式
熊D注:注意可交互元素的狀態管理
將不影響首屏的資源和當前屏幕資源不用的資源放到用戶須要時才加載,能夠大大提高重要資源的顯示速度和下降整體流量
PS:按需加載會致使大量重繪,影響渲染性能算法
大型重資源頁面(如遊戲)可以使用增長 Loading 的方法,資源加載完成後再顯示頁面。但 Loading 時間過長,會形成用戶流失
對用戶行爲分析,能夠在當前頁加載下一頁資源,提高速度
圖片是最佔流量的資源,所以儘可能避免使用他,使用時選擇最合適的格式(實現需求的前提下,以大小判斷),合適的大小,而後使用智圖壓縮,同時在代碼中用 Srcset 來按需顯示
PS:過分壓縮圖片大小影響圖片顯示效果
Cookie 會影響加載速度,因此靜態資源域名不使用 Cookie
重定向會影響加載速度,因此在服務器正確設置避免重定向
第三方資源不可控會影響頁面的加載和顯示,所以要異步加載第三方資源
腳本處理不當會阻塞頁面加載、渲染,所以在使用時需當注意
空 Src 會從新加載當前頁面,影響速度和效率
重設圖片大小是指在頁面、CSS、JavaScript 等中屢次重置圖片大小,屢次重設圖片大小會引起圖片的屢次重繪,影響性能
DataURL 圖片沒有使用圖片的壓縮算法文件會變大,而且要解碼後再渲染,加載慢耗時長
熊D注:使用 DataURL 來顯示的圖片通常尺寸都較小或結構較簡單,推薦優先使用 CSS 實現
CSS 表達式的執行需跳出 CSS 樹的渲染,所以請避免 CSS 表達式
空的 CSS 規則增長了 CSS 文件的大小,且影響 CSS 樹的執行,因此需移除空的 CSS 規則
Display 屬性會影響頁面的渲染,所以請合理使用
Float 在渲染時計算量比較大,儘可能減小使用
Web 字體須要下載,解析,重繪當前頁面,儘可能減小使用
過多的 Font-size 引起 CSS 樹的效率
爲了瀏覽器的兼容性和性能,值爲 0 時不要帶單位
熊D注:出於兼容性考慮是否棄用 -o- 有待看具體項目需求
高級選擇器執行耗時長且不易讀懂,避免使用
熊D注:此外,嵌套過深的選擇器也應慎用,權重較大,解析速度慢且不利於 CSS 的模塊化
每次 Dom 選擇都要計算,緩存他
每次 .length 都要計算,用一個變量保存這個值
熊D注:執行過程當中,任何使用超過兩次的變量,都應考慮緩存該變量以提升執行效率
ID 選擇器是最快的
使用 touchstart、touchend 代替 click,因快影響速度快。但應注意 Touch 響應過快,易引起誤操做
Viewport 能夠加速頁面的渲染,請使用如下代碼
<meta name="viewport" content="width=device-width, initial-scale=1">
Dom 節點太多影響頁面的渲染,應儘可能減小 Dom 節點
Touchmove、Scroll 事件可致使屢次渲染
CSS 中如下屬性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)來觸發 GPU 渲染,請合理使用
PS:過渡使用會引起手機過耗電增長
熊D注:推薦拓展閱讀 > CSS動畫屬性性能 & 高性能 CSS3 動畫
參考資料
本文由 @米隨隨 發表在 移動H5前端性能優化指南 讀後深表贊同,特來搬磚 最後:感謝原做者寫的好文~敬禮~