HTML5是一種最新發佈網頁構架的廣泛模型,是構建對程序、對用戶都更有價值的數據驅動的Web的前端技術框架,它的價值在於融合CSS/javaScript/flash等衆多前端開發技術,更多的體如今對交互的理解和視覺設計的還原上。javascript
HTML5框架能夠提高網站的訪問速度,經過優化前端將響應時間加快,使用戶的等待時間減小,所謂前端是指在客戶端經過瀏覽器發送了一個請求,除去後臺系 統用戶請求、執行數據查詢並對結果進行組織所須要處理消耗的時間,在涌現的新技術中,JavaScript和一套新的API純腳本技術,是HTML5核 心,須要經過JavaScript有許多方法能夠用來檢測HTML5的支持能力。css
對於訪問量大的網站來講,前端的優化是必須的,即便是優化1KB的大小對其影響也很大,下面馬海祥就帶你們來看看移動手機平臺的HTML5前端優化,或許對你有幫助和啓發。html
1、HTML5前端性能優化概述前端
當今移動互聯網已經佔到整個網絡流量的一半,而隨着HTML5標準的出臺,做爲前端工程師們頗有必要研究一下如何優化HTML5在移動設置上的性能表現,首先咱們須要明確如下幾個原則:java
一、PC優化手段在Mobile側一樣適用。web
二、在Mobile側咱們提出三秒種渲染完成首屏指標。正則表達式
三、基於第二點,首屏加載3秒完成或使用Loading。算法
四、基於聯通3G網絡平均338KB/s(2.71Mb/s),因此首屏資源不該超過1014KB。瀏覽器
五、Mobile側因手機配置緣由,除加載外渲染速度也是優化重點。緩存
六、基於第五點,要合理處理代碼減小渲染損耗。
七、基於第2、第五點,全部影響首屏加載和渲染的代碼應在處理邏輯中後置。
八、加載完成後用戶交互使用時也需注意性能。
2、加載優化
對於移動端的網頁來講,加載過程是最爲耗時的過程,可能會佔到總耗時的80%時間,所以是優化的重點,固然,手機站的其餘前端要素優化也是不能忽略的。
一、減小HTTP請求
由於手機瀏覽器同時響應請求爲4個請求(Android支持4個,iOS 5後可支持6個),因此要儘可能減小頁面的請求數,首次加載同時請求數不能超過4個,馬海祥建議的優化要點爲如下2點:
(1)、合併CSS、JavaScript
(2)、合併小圖片,使用雪碧圖
二、緩存
使用緩存能夠減小向服務器的請求數,節省加載時間,因此全部靜態資源都要在服務器端設置緩存,而且儘可能使用長Cache(長Cache資源的更新可以使用時間戳)。
(1)、緩存一切可緩存的資源
(2)、使用長Cache(使用時間戳更新Cache)
(3)、使用外聯式引用CSS、JavaScript
三、壓縮HTML、CSS、JavaScript
減小資源大小能夠加快網頁顯示速度,因此要對HTML、CSS、JavaScript等進行代碼壓縮,並在服務器端設置GZip。
(1)、壓縮(例如,多餘的空格、換行符和縮進)
(2)、啓用GZip
四、無阻塞
寫在HTML頭部的JavaScript(無異步),和寫在HTML標籤中的Style會阻塞頁面的渲染,所以CSS放在頁面頭部並使用Link方式引入,避免在HTML標籤中寫Style,JavaScript放在頁面尾部或使用異步方式加載
五、使用首屏加載
首屏的快速顯示,能夠大大提高用戶對頁面速度的感知,所以應儘可能針對首屏的快速顯示作優化。
六、按需加載
將不影響首屏的資源和當前屏幕資源不用的資源放到用戶須要時才加載,能夠大大提高重要資源的顯示速度和下降整體流量。
(1)、LazyLoad
(2)、滾屏加載
(3)、經過Media Query加載
另外,馬海祥提醒你們一點:按需加載會致使大量重繪,影響渲染性能。
七、預加載
大型重資源頁面(如遊戲)可以使用增長Loading的方法,資源加載完成後再顯示頁面,但Loading時間過長,會形成用戶流失。
(1)、可感知Loading(如進入空間遊戲的Loading)
(2)、不可感知的Loading(如提早加載下一頁)
(3)、對用戶行爲分析,能夠在當前頁加載下一頁資源,提高速度。
八、壓縮圖片
圖片是最佔流量的資源,所以儘可能避免使用他,使用時選擇最合適的格式(實現需求的前提下,以大小判斷),合適的大小,而後使用智圖壓縮,同時在代碼中用Srcset來按需顯示。
(1)、使用智圖
(2)、使用其它方式代替圖片(使用CSS3;使用SVG;使用IconFont)
(3)、使用Srcset
(4)、選擇合適的圖片(webP優於JPG;PNG8優於GIF)
(5)、選擇合適的大小(首次加載不大於1014KB;基於手機屏幕通常寬度不寬於640)
另外,馬海祥提醒你們一點:過分壓縮圖片大小影響圖片顯示效果。
九、減小Cookie
Cookie會影響加載速度,因此靜態資源域名不使用Cookie。
十、避免重定向
重定向會影響加載速度,因此在服務器正確設置避免重定向。
十一、異步加載第三方資源
第三方資源不可控會影響頁面的加載和顯示,所以要異步加載第三方資源。
3、腳本執行優化
腳本處理不當會阻塞頁面加載、渲染,所以在使用時須要注意如下幾點:
一、CSS寫在頭部,JavaScript寫在尾部或異步。
二、避免圖片和iFrame等的空Src,空Src會從新加載當前頁面,影響速度和效率。
三、儘可能避免重設圖片大小,重設圖片大小是指在頁面、CSS、JavaScript等中屢次重置圖片大小,屢次重設圖片大小會引起圖片的屢次重繪,影響性能。
四、圖片儘可能避免使用DataURL,DataURL圖片沒有使用圖片的壓縮算法文件會變大,而且要解碼後再渲染,加載慢耗時長。
4、CSS優化
一、儘可能避免寫在HTML標籤中寫Style屬性。
二、避免CSS表達式,CSS表達式的執行需跳出CSS樹的渲染,所以請避免CSS表達式。
三、移除空的CSS規則,空的CSS規則增長了CSS文件的大小,且影響CSS樹的執行,因此需移除空的CSS規則。
四、正確使用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
五、不濫用Float,Float在渲染時計算量比較大,儘可能減小使用。
六、不濫用Web字體,Web字體須要下載,解析,重繪當前頁面,儘可能減小使用。
七、不聲明過多的Font-size,過多的Font-size引起CSS樹的效率。
八、值爲0時不須要任何單位,爲了瀏覽器的兼容性和性能,值爲0時不要帶單位。
九、標準化各類瀏覽器前綴
(1)、無前綴應放在最後。
(2)、CSS動畫只用(-webkit- 無前綴)兩種便可。
(3)、其它前綴爲「-webkit- -moz- -ms-無前綴」四種(-o-Opera瀏覽器改用blink內核,因此淘汰)。
十、避免讓選擇符看起來像正則表達式。
高級選擇器執行耗時長且不易讀懂,避免使用。
5、JavaScript執行優化
一、減小重繪和迴流
(1)、避免沒必要要的Dom操做
(2)、儘可能改變Class而不是Style,使用classList代替className
(3)、避免使用document.write
(4)、減小drawImage
二、緩存Dom選擇與計算,每次Dom選擇都要計算,緩存他。
三、緩存列表.length,每次.length都要計算,用一個變量保存這個值。
四、儘可能使用事件代理,避免批量綁定事件。
五、儘可能使用ID選擇器,ID選擇器是最快的。
六、TOUCH事件優化,使用touchstart、touchend代替click,因快影響速度快,但應注意Touch響應過快,易引起誤操做。
6、渲染優化
HTML文檔是以包含文檔編碼信息的數據流方式在網絡間傳輸,頁面的編碼信息通常會在HTTP響應的頭部信息或在文檔內的HTML標記中指明,客戶端瀏覽 器只有在肯定了頁面編碼後才能正確的渲染頁面,因此在繪製頁面或執行任何的javascript代碼前,大部分的瀏覽器(ie六、ie七、ie8除外)都 會緩衝必定字節的數據來從中查找編碼信息,不一樣的瀏覽器當中預緩衝的字節數是不同的。
一、HTML使用Viewport
Viewport能夠加速頁面的渲染,請使用如下代碼:
<meta name=」viewport」 content=」width=device-width, initial-scale=1″>
二、減小Dom節點
Dom節點太多影響頁面的渲染,應儘可能減小Dom節點。
三、動畫優化
(1)、儘可能使用CSS3動畫。
(2)、合理使用requestAnimationFrame動畫代替setTimeout。
(3)、適當使用Canvas動畫5個元素之內使用css動畫,5個以上使用Canvas動畫(iOS8可以使用webGL)。
四、高頻事件優化
Touchmove、Scroll事件可致使屢次渲染。
(1)、使用requestAnimationFrame監聽幀變化,使得在正確的時間進行渲染。
(2)、增長響應變化的時間間隔,減小重繪次數。
五、GPU加速
CSS中如下屬性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)來觸發GPU渲染,請合理使用。
另外,過渡使用會引起手機過耗電增長。
HTML5只是一種方法和手段,並非萬能的,思考怎麼符合移動端設備特別是沒錯,但前提務必要基於PC站框架結構和內容,保證內容的一致性是解決 HTML5痛點的惟一辦法,這個時候你們再去理解「凡是適合在移動端展示的網站」就不是站在高點去理解了,就應該站在最低點,怎麼展現符合移動界面,同時 知足一部分移動用戶的使用體驗和需求。