前端性能優化指南

談起前端新能優化,不得不說起起《移動H5前端性能優化指南》。該書透徹的分析了前端的性能優化,它不只僅只適應移動端,一樣也適用與PC端。(移動端配置環境比PC端更苛刻)下面直接貼上H5優化指南內容:

移動H5性能優化指南

1、加載優化
對於移動端的網頁來講,加載過程是最爲耗時的過程,可能會佔到總耗時的80%時間,所以是優化的重點,固然,手機站的其餘前端要素優化也是不能忽略的。 一、減小HTTP請求 由於手機瀏覽器同時響應請求爲4個請求(Android支持4個,iOS 5後可支持6個),因此要儘可能減小頁面的請求數,首次加載同時請求數不能超過4個,建議優化要點爲如下2點: 一、合併CSS、JavaScript 二、合併小圖片,使用雪碧圖 二、緩存 使用緩存能夠減小向服務器的請求數,節省加載時間,因此全部靜態資源都要在服務器端設置緩存,而且儘可能使用長Cache(長Cache資源的更新可以使用時間戳)。 一、緩存一切可緩存的資源 二、使用長Cache(使用時間戳更新Cache) 三、使用外聯式引用CSS、JavaScript 三、壓縮HTML、CSS、JavaScript 減小資源大小能夠加快網頁顯示速度,因此要對HTML、CSS、JavaScript等進行代碼壓縮,並在服務器端設置GZip。 一、壓縮(例如,多餘的空格、換行符和縮進) 二、啓用GZip 四、無阻塞 寫在HTML頭部的JavaScript(無異步),和寫在HTML標籤中的Style會阻塞頁面的渲染,所以CSS放在頁面頭部並使用Link方式引入,避免在HTML標籤中寫Style,JavaScript放在頁面尾部或使用異步方式加載 五、使用首屏加載 首屏的快速顯示,能夠大大提高用戶對頁面速度的感知,所以應儘可能針對首屏的快速顯示作優化。 六、按需加載 將不影響首屏的資源和當前屏幕資源不用的資源放到用戶須要時才加載,能夠大大提高重要資源的顯示速度和下降整體流量。 一、LazyLoad 二、滾屏加載 三、經過Media Query加載 另外,提醒你們一點:按需加載會致使大量重繪,影響渲染性能。 七、預加載 大型重資源頁面(如遊戲)可以使用增長Loading的方法,資源加載完成後再顯示頁面,但Loading時間過長,會形成用戶流失。 一、可感知Loading(如進入空間遊戲的Loading) 二、不可感知的Loading(如提早加載下一頁) 三、對用戶行爲分析,能夠在當前頁加載下一頁資源,提高速度。 八、壓縮圖片 圖片是最佔流量的資源,所以儘可能避免使用他,使用時選擇最合適的格式(實現需求的前提下,以大小判斷),合適的大小,而後使用智圖壓縮,同時在代碼中用Srcset來按需顯示。 (提醒你們一點:過分壓縮圖片大小影響圖片顯示效果。) 九、減小Cookie,避免重定向以及異步加載第三方資源 Cookie會影響加載速度,因此靜態資源域名不使用Cookie。另外,重定向會影響加載速度,因此在服務器正確設置避免重定向。還有,第三方資源不可控會影響頁面的加載和顯示,所以要異步加載第三方資源。

2、圖片優化
一、使用智圖或其餘壓縮工具壓縮圖片
二、使用其它方式代替圖片(使用CSS3;使用SVG;使用IconFont)
三、使用Srcset
四、選擇合適的圖片(webP優於JPG;PNG8優於GIF)
五、選擇合適的大小(首次加載不大於1014KB;基於手機屏幕通常寬度不寬於640)
3、CSS優化 腳本處理不當會阻塞頁面加載、渲染,所以在使用時須要注意如下幾點:
一、CSS寫在頭部,JavaScript寫在尾部或異步。
二、避免圖片和iFrame等的空Src,空Src會從新加載當前頁面,影響速度和效率。
三、儘可能避免重設圖片大小,重設圖片大小是指在頁面、CSS、JavaScript等中屢次重置圖片大小,屢次重設圖片大小會引起圖片的屢次重繪,影響性能。
四、圖片儘可能避免使用DataURL,DataURL圖片沒有使用圖片的壓縮算法文件會變大,而且要解碼後再渲染,加載慢耗時長。
五、儘可能避免寫在HTML標籤中寫Style屬性。
六、避免CSS表達式,CSS表達式的執行需跳出CSS樹的渲染,所以請避免CSS表達式。
七、移除空的CSS規則,空的CSS規則增長了CSS文件的大小,且影響CSS樹的執行,因此需移除空的CSS規則。 八、不濫用Float,Float在渲染時計算量比較大,儘可能減小使用。 九、不濫用Web字體,Web字體須要下載,解析,重繪當前頁面,儘可能減小使用。 十、不聲明過多的Font-size,過多的Font-size引起CSS樹的效率。 十一、值爲0時不須要任何單位,爲了瀏覽器的兼容性和性能,值爲0時不要帶單位。 十二、標準化各類瀏覽器前綴 (1)、無前綴應放在最後。 (2)、CSS動畫只用(-webkit- 無前綴)兩種便可。 (3)、其它前綴爲「-webkit- -moz- -ms-無前綴」四種(-o-Opera瀏覽器改用blink內核,因此淘汰)。 1三、避免讓選擇符看起來像正則表達式(高級選擇器執行耗時長且不易讀懂,避免使用)。
1四、正確使用Display的屬性,Display屬性會影響頁面的渲染,建議各位站長要合理使用。
(1)、display:inline後不該該再使用width、height、margin、padding以及float
(2)、display:inline-block後不該該再使用float
(3)、display:block後不該該再使用vertical-align
(4)、display:table-*後不該該再使用margin或者float
4、JavaScript執行優化 一、減小重繪和迴流 (1)、避免沒必要要的Dom操做 (2)、儘可能改變Class而不是Style,使用classList代替className (3)、避免使用document.write (4)、減小drawImage 二、緩存Dom選擇與計算,每次Dom選擇都要計算,緩存他。 三、緩存列表.length,每次.length都要計算,用一個變量保存這個值。 四、儘可能使用事件代理,避免批量綁定事件。 五、儘可能使用ID選擇器,ID選擇器是最快的。 六、TOUCH(PC端: mouse)事件優化,使用touchstart、touchend代替click,因快影響速度快,但應注意Touch響應過快,易引起誤操做。 5、渲染優化 HTML文檔是以包含文檔編碼信息的數據流方式在網絡間傳輸,頁面的編碼信息通常會在HTTP響應的頭部信息或在文檔內的HTML標記中指明,客戶端瀏覽器只有在肯定了頁面編碼後才能正確的渲染頁面,因此在繪製頁面或執行任何的javascript代碼前,大部分的瀏覽器(ie六、ie七、ie8除外)都 會緩衝必定字節的數據來從中查找編碼信息,不一樣的瀏覽器當中預緩衝的字節數是不同的。 一、HTML使用Viewport 二、減小Dom節點 Dom節點太多影響頁面的渲染,應儘可能減小Dom節點。 三、動畫優化 (1)、儘可能使用CSS3動畫。 (2)、合理使用requestAnimationFrame動畫代替setTimeout。 (3)、適當使用Canvas動畫5個元素之內使用css動畫,5個以上使用Canvas動畫(iOS8可以使用webGL)。 四、高頻事件優化 Touchmove(PC端: mouse事件)、Scroll事件可致使屢次渲染。 (1)、使用requestAnimationFrame監聽幀變化,使得在正確的時間進行渲染。 (2)、增長響應變化的時間間隔,減小重繪次數。 五、GPU加速 CSS中如下屬性(CSS3 transitions、CSS3 3Dtransforms、Opacity、Canvas、WebGL、Video)來觸發GPU渲染,請合理使用。(PS:過渡使用會引起手機過耗電增長)

最後在補上一波性能檢查工具使用教程見連接( lighthouse性能檢測插件
相關文章
相關標籤/搜索