旗下網站

百科知識庫

報道公司事件 · 傳播行業動态

移動HTML 5前端詳細簡介

發布日期:2015-01-28    發布者:高小生(Born)

  概述

  PC優化手段在(Exist)Mobile側同樣适用(Use)

  在(Exist)Mobile側我(I)們提出(Out)三秒種渲染完成首屏指标

  基于(At)第二點,首屏加載3秒完成或使用(Use)Loading

  基于(At)聯通3G網絡平均338KB/s(2.71Mb/s),所以(By)首屏資源不(No)應超過1014KB

  Mobile側因手機配置原因,除加載外渲染速度也是優化重點

  基于(At)第五點,要(Want)合理處理代碼減少渲染損耗

  基于(At)第二、第五點,所有影響首屏加載和(And)渲染的(Of)代碼應在(Exist)處理邏輯中後置

  加載完成後用(Use)戶交互使用(Use)時(Hour)也需注意性能

  [加載優化]

  加載過程是最爲(For)耗時(Hour)的(Of)過程,可能會占到(Arrive)總耗時(Hour)的(Of)80%時(Hour)間,因此是優化的(Of)重點

  減少HTTP請求

  因爲(For)手機浏覽器同時(Hour)響應請求爲(For)4個(Indivual)請求(Android支持4個(Indivual),iOS 5後可支持6個(Indivual)),所以(By)要(Want)盡量減少頁面的(Of)請求數,首次加載同時(Hour)請求數不(No)能超過4個(Indivual)。

  a)合并CSS、JavaScript

  b)合并小圖片,使用(Use)雪碧圖

  緩存

  使用(Use)緩存可以(By)減少向服務器的(Of)請求數,節省加載時(Hour)間,所以(By)所有靜态資源都要(Want)在(Exist)服務器端設置緩存,并且盡量使用(Use)長Cache(長Cache資源的(Of)更新可使用(Use)時(Hour)間戳)

  a) 緩存一(One)切可緩存的(Of)資源

  b) 使用(Use)長Cache(使用(Use)時(Hour)間戳更新Cache)

  c) 使用(Use)外聯式引用(Use)CSS、JavaScript

  壓縮HTML、CSS、JavaScript

  減少資源大(Big)小可以(By)加快網頁顯示速度,所以(By)要(Want)對HTML、CSS、JavaScript等進行代碼壓縮,并在(Exist)服務器端設置GZip。

  a) 壓縮(例如,多餘的(Of)空格、換行符和(And)縮進)

  b) 啓用(Use)GZip

  無阻塞

  寫在(Exist)HTML頭部的(Of)JavaScript(無異步),和(And)寫在(Exist)HTML标簽中的(Of)Style會阻塞頁面的(Of)渲染,因此CSS放在(Exist)頁面頭部并使用(Use)Link方式引入,避免在(Exist)HTML标簽中寫Style,JavaScript放在(Exist)頁面尾部或使用(Use)異步方式加載。

  使用(Use)首屏加載

  首屏的(Of)快速顯示,可以(By)大(Big)大(Big)提升用(Use)戶對頁面速度的(Of)感知,因此應盡量針對首屏的(Of)快速顯示做優化。

  按需加載

  将不(No)影響首屏的(Of)資源和(And)當前屏幕資源不(No)用(Use)的(Of)資源放到(Arrive)用(Use)戶需要(Want)時(Hour)才加載,可以(By)大(Big)大(Big)提升重要(Want)資源的(Of)顯示速度和(And)降低總體流量。

  PS:按需加載會導緻大(Big)量重繪,影響渲染性能

  a) LazyLoad

  b) 滾屏加載

  c) 通過Media Query加載

  預加載

  大(Big)型重資源頁面(如遊戲)可使用(Use)增加Loading的(Of)方法,資源加載完成後再顯示頁面。但Loading時(Hour)間過長,會造成用(Use)戶流失。

  對用(Use)戶行爲(For)分析,可以(By)在(Exist)當前頁加載下一(One)頁資源,提升速度。

  a) 可感知Loading(如進入空間遊戲的(Of)Loading)

  b) 不(No)可感知的(Of)Loading(如提前加載下一(One)頁)

  壓縮圖片

  圖片是最占流量的(Of)資源,因此盡量避免使用(Use)他(He),使用(Use)時(Hour)選擇最合适的(Of)格式(實現需求的(Of)前提下,以(By)大(Big)小判斷),合适的(Of)大(Big)小,然後使用(Use)智圖壓縮,同時(Hour)在(Exist)代碼中用(Use)Srcset來(Come)按需顯示。

  PS:過度壓縮圖片大(Big)小影響圖片顯示效果

  a) 使用(Use)智圖( http://zhitu.tencent.com/ )

  b) 使用(Use)其它方式代替圖片(1. 使用(Use)CSS3 2. 使用(Use)SVG 3. 使用(Use)IconFont)

  c) 使用(Use)Srcset

  d) 選擇合适的(Of)圖片(1. webP優于(At)JPG 2. PNG8優于(At)GIF)

  e) 選擇合适的(Of)大(Big)小(1. 首次加載不(No)大(Big)于(At)1014KB 2. 不(No)寬于(At)640(基于(At)手機屏幕一(One)般寬度))

  延伸閱讀:《濃縮的(Of)精華!從零開始帶你認識最新的(Of)圖片格式WebP》

  減少Cookie

  Cookie會影響加載速度,所以(By)靜态資源域名不(No)使用(Use)Cookie。

  避免重定向

  重定向會影響加載速度,所以(By)在(Exist)服務器正确設置避免重定向。

  異步加載第三方資源

  第三方資源不(No)可控會影響頁面的(Of)加載和(And)顯示,因此要(Want)異步加載第三方資源。

  [腳本執行優化]

  腳本處理不(No)當會阻塞頁面加載、渲染,因此在(Exist)使用(Use)時(Hour)需當注意:

  CSS寫在(Exist)頭部,JavaScript寫在(Exist)尾部或異步。

  避免圖片和(And)iFrame等的(Of)空Src,空Src會重新加載當前頁面,影響速度和(And)效率。

  盡量避免重設圖片大(Big)小。

  重設圖片大(Big)小是指在(Exist)頁面、CSS、JavaScript等中多次重置圖片大(Big)小,多次重設圖片大(Big)小會引發圖片的(Of)多次重繪,影響性能。

  圖片盡量避免使用(Use)DataURL,DataURL圖片沒有使用(Use)圖片的(Of)壓縮算法文件會變大(Big),并且要(Want)解碼後再渲染,加載慢耗時(Hour)長

  [CSS優化]

  盡量避免寫在(Exist)HTML标簽中寫Style屬性

  避免CSS表達式

  CSS表達式的(Of)執行需跳出(Out)CSS樹的(Of)渲染,因此請避免CSS表達式。

  移除空的(Of)CSS規則

  空的(Of)CSS規則增加了CSS文件的(Of)大(Big)小,且影響CSS樹的(Of)執行,所以(By)需移除空的(Of)CSS規則。

  正确使用(Use)Display的(Of)屬性

  Display屬性會影響頁面的(Of)渲染,因此請合理使用(Use)。

  a) display:inline後不(No)應該再使用(Use)width、height、margin、padding以(By)及float

  b) display:inline-block後不(No)應該再使用(Use)float

  c) display:block後不(No)應該再使用(Use)vertical-align

  d) display:table-*後不(No)應該再使用(Use)margin或者float

  不(No)濫用(Use)Float

  Float在(Exist)渲染時(Hour)計算量比較大(Big),盡量減少使用(Use)。

  不(No)濫用(Use)Web字體

  Web字體需要(Want)下載,解析,重繪當前頁面,盡量減少使用(Use)。

  不(No)聲明過多的(Of)Font-size

  過多的(Of)Font-size引發CSS樹的(Of)效率。

  值爲(For)0時(Hour)不(No)需要(Want)任何單位

  爲(For)了浏覽器的(Of)兼容性和(And)性能,值爲(For)0時(Hour)不(No)要(Want)帶單位。

  标準化各種浏覽器前綴

  a) 無前綴應放在(Exist)最後

  b) CSS動畫隻用(Use) (-webkit- 無前綴)兩種即可

  c) 其它前綴爲(For) -webkit- -moz- -ms- 無前綴 四種,(-o-Opera浏覽器改用(Use)blink内核,所以(By)淘汰)

  避免讓選擇符看起來(Come)像正則表達式

  高級選擇器執行耗時(Hour)長且不(No)易讀懂,避免使用(Use)。

  [JavaScript執行優化]

  減少重繪和(And)回流

  a) 避免不(No)必要(Want)的(Of)Dom操作(Do)

  b) 盡量改變Class而不(No)是Style,使用(Use)classList代替className

  c) 避免使用(Use)document.write

  d) 減少drawImage

  緩存Dom選擇與計算

  每次Dom選擇都要(Want)計算,緩存他(He)。

  緩存列表.length

  每次.length都要(Want)計算,用(Use)一(One)個(Indivual)變量保存這(This)個(Indivual)值

  盡量使用(Use)事件代理,避免批量綁定事件

  盡量使用(Use)ID選擇器,ID選擇器是最快的(Of)。

  TOUCH事件優化

  使用(Use)touchstart、touchend代替click,因快影響速度快。但應注意Touch響應過快,易引發誤操作(Do)

  [渲染優化]

  HTML使用(Use)Viewport

  Viewport可以(By)加速頁面的(Of)渲染,請使用(Use)以(By)下代碼:

  減少Dom節點

  Dom節點太多影響頁面的(Of)渲染,應盡量減少Dom節點

  動畫優化

  a) 盡量使用(Use)CSS3動畫

  b) 合理使用(Use)requestAnimationFrame動畫代替setTimeout

  c) 适當使用(Use)Canvas動畫 5個(Indivual)元素以(By)内使用(Use)css動畫,5個(Indivual)以(By)上使用(Use)Canvas動畫(iOS8可使用(Use)webGL)

  高頻事件優化

  Touchmove、Scroll 事件可導緻多次渲染

  a) 使用(Use)requestAnimationFrame監聽幀變化,使得在(Exist)正确的(Of)時(Hour)間進行渲染

  b) 增加響應變化的(Of)時(Hour)間間隔,減少重繪次數

  GPU加速

  CSS中以(By)下屬性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)來(Come)觸發GPU渲染,請合理使用(Use)。

Copyright 大(Big)連網龍科技 版權所有 京ICP證000000号  html - txt -

遼公網安備 21021702000140号

電話
客服