旗下(xià)網站
s

百科知識庫

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

移動HTML 5前端詳細簡介

發布日期:2015-01-28    發布者:高(gāo)小生

  概述

  PC優化(huà)手段在Mobile側同樣适用(yòng)

  在Mobile側我們提出三秒種渲染完成首屏指标

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

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

  Mobile側因手機配置原因,除加載外渲染速度也(yě)是優化(huà)重點

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

  基于第二、第五點,所有影(yǐng)響首屏加載和(hé)渲染的(de)代碼應在處理(lǐ)邏輯中後置

  加載完成後用(yòng)戶交互使用(yòng)時(shí)也(yě)需注意性能

  [加載優化(huà)]

  加載過程是最爲耗時(shí)的(de)過程,可(kě)能會占到總耗時(shí)的(de)80%時(shí)間,因此是優化(huà)的(de)重點

  減少HTTP請求

  因爲手機浏覽器同時(shí)響應請求爲4個(gè)請求(Android支持4個(gè),iOS 5後可(kě)支持6個(gè)),所以要盡量減少頁面的(de)請求數,首次加載同時(shí)請求數不能超過4個(gè)。

  a)合并CSS、JavaScript

  b)合并小圖片,使用(yòng)雪(xuě)碧圖

  緩存

  使用(yòng)緩存可(kě)以減少向服務器的(de)請求數,節省加載時(shí)間,所以所有靜态資源都要在服務器端設置緩存,并且盡量使用(yòng)長(cháng)Cache(長(cháng)Cache資源的(de)更新可(kě)使用(yòng)時(shí)間戳)

  a) 緩存一切可(kě)緩存的(de)資源

  b) 使用(yòng)長(cháng)Cache(使用(yòng)時(shí)間戳更新Cache)

  c) 使用(yòng)外聯式引用(yòng)CSS、JavaScript

  壓縮HTML、CSS、JavaScript

  減少資源大(dà)小可(kě)以加快(kuài)網頁顯示速度,所以要對(duì)HTML、CSS、JavaScript等進行代碼壓縮,并在服務器端設置GZip。

  a) 壓縮(例如,多(duō)餘的(de)空格、換行符和(hé)縮進)

  b) 啓用(yòng)GZip

  無阻塞

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

  使用(yòng)首屏加載

  首屏的(de)快(kuài)速顯示,可(kě)以大(dà)大(dà)提升用(yòng)戶對(duì)頁面速度的(de)感知,因此應盡量針對(duì)首屏的(de)快(kuài)速顯示做(zuò)優化(huà)。

  按需加載

  将不影(yǐng)響首屏的(de)資源和(hé)當前屏幕資源不用(yòng)的(de)資源放到用(yòng)戶需要時(shí)才加載,可(kě)以大(dà)大(dà)提升重要資源的(de)顯示速度和(hé)降低總體流量。

  PS:按需加載會導緻大(dà)量重繪,影(yǐng)響渲染性能

  a) LazyLoad

  b) 滾屏加載

  c) 通(tōng)過Media Query加載

  預加載

  大(dà)型重資源頁面(如遊戲)可(kě)使用(yòng)增加Loading的(de)方法,資源加載完成後再顯示頁面。但Loading時(shí)間過長(cháng),會造成用(yòng)戶流失。

  對(duì)用(yòng)戶行爲分(fēn)析,可(kě)以在當前頁加載下(xià)一頁資源,提升速度。

  a) 可(kě)感知Loading(如進入空間遊戲的(de)Loading)

  b) 不可(kě)感知的(de)Loading(如提前加載下(xià)一頁)

  壓縮圖片

  圖片是最占流量的(de)資源,因此盡量避免使用(yòng)他(tā),使用(yòng)時(shí)選擇最合适的(de)格式(實現需求的(de)前提下(xià),以大(dà)小判斷),合适的(de)大(dà)小,然後使用(yòng)智圖壓縮,同時(shí)在代碼中用(yòng)Srcset來(lái)按需顯示。

  PS:過度壓縮圖片大(dà)小影(yǐng)響圖片顯示效果

  a) 使用(yòng)智圖( http://zhitu.tencent.com/ )

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

  c) 使用(yòng)Srcset

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

  e) 選擇合适的(de)大(dà)小(1. 首次加載不大(dà)于1014KB 2. 不寬于640(基于手機屏幕一般寬度))

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

  減少Cookie

  Cookie會影(yǐng)響加載速度,所以靜态資源域名不使用(yòng)Cookie。

  避免重定向

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

  異步加載第三方資源

  第三方資源不可(kě)控會影(yǐng)響頁面的(de)加載和(hé)顯示,因此要異步加載第三方資源。

  [腳本執行優化(huà)]

  腳本處理(lǐ)不當會阻塞頁面加載、渲染,因此在使用(yòng)時(shí)需當注意:

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

  避免圖片和(hé)iFrame等的(de)空Src,空Src會重新加載當前頁面,影(yǐng)響速度和(hé)效率。

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

  重設圖片大(dà)小是指在頁面、CSS、JavaScript等中多(duō)次重置圖片大(dà)小,多(duō)次重設圖片大(dà)小會引發圖片的(de)多(duō)次重繪,影(yǐng)響性能。

  圖片盡量避免使用(yòng)DataURL,DataURL圖片沒有使用(yòng)圖片的(de)壓縮算(suàn)法文件會變大(dà),并且要解碼後再渲染,加載慢(màn)耗時(shí)長(cháng)

  [CSS優化(huà)]

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

  避免CSS表達式

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

  移除空的(de)CSS規則

  空的(de)CSS規則增加了(le)CSS文件的(de)大(dà)小,且影(yǐng)響CSS樹的(de)執行,所以需移除空的(de)CSS規則。

  正确使用(yòng)Display的(de)屬性

  Display屬性會影(yǐng)響頁面的(de)渲染,因此請合理(lǐ)使用(yòng)。

  a) display:inline後不應該再使用(yòng)width、height、margin、padding以及float

  b) display:inline-block後不應該再使用(yòng)float

  c) display:block後不應該再使用(yòng)vertical-align

  d) display:table-*後不應該再使用(yòng)margin或者float

  不濫用(yòng)Float

  Float在渲染時(shí)計算(suàn)量比較大(dà),盡量減少使用(yòng)。

  不濫用(yòng)Web字體

  Web字體需要下(xià)載,解析,重繪當前頁面,盡量減少使用(yòng)。

  不聲明(míng)過多(duō)的(de)Font-size

  過多(duō)的(de)Font-size引發CSS樹的(de)效率。

  值爲0時(shí)不需要任何單位

  爲了(le)浏覽器的(de)兼容性和(hé)性能,值爲0時(shí)不要帶單位。

  标準化(huà)各種浏覽器前綴

  a) 無前綴應放在最後

  b) CSS動畫(huà)隻用(yòng) (-webkit- 無前綴)兩種即可(kě)

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

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

  高(gāo)級選擇器執行耗時(shí)長(cháng)且不易讀懂(dǒng),避免使用(yòng)。

  [JavaScript執行優化(huà)]

  減少重繪和(hé)回流

  a) 避免不必要的(de)Dom操作

  b) 盡量改變Class而不是Style,使用(yòng)classList代替className

  c) 避免使用(yòng)document.write

  d) 減少drawImage

  緩存Dom選擇與計算(suàn)

  每次Dom選擇都要計算(suàn),緩存他(tā)。

  緩存列表.length

  每次.length都要計算(suàn),用(yòng)一個(gè)變量保存這(zhè)個(gè)值

  盡量使用(yòng)事件代理(lǐ),避免批量綁定事件

  盡量使用(yòng)ID選擇器,ID選擇器是最快(kuài)的(de)。

  TOUCH事件優化(huà)

  使用(yòng)touchstart、touchend代替click,因快(kuài)影(yǐng)響速度快(kuài)。但應注意Touch響應過快(kuài),易引發誤操作

  [渲染優化(huà)]

  HTML使用(yòng)Viewport

  Viewport可(kě)以加速頁面的(de)渲染,請使用(yòng)以下(xià)代碼:

  減少Dom節點

  Dom節點太多(duō)影(yǐng)響頁面的(de)渲染,應盡量減少Dom節點

  動畫(huà)優化(huà)

  a) 盡量使用(yòng)CSS3動畫(huà)

  b) 合理(lǐ)使用(yòng)requestAnimationFrame動畫(huà)代替setTimeout

  c) 适當使用(yòng)Canvas動畫(huà) 5個(gè)元素以内使用(yòng)css動畫(huà),5個(gè)以上使用(yòng)Canvas動畫(huà)(iOS8可(kě)使用(yòng)webGL)

  高(gāo)頻(pín)事件優化(huà)

  Touchmove、Scroll 事件可(kě)導緻多(duō)次渲染

  a) 使用(yòng)requestAnimationFrame監聽(tīng)幀變化(huà),使得(de)在正确的(de)時(shí)間進行渲染

  b) 增加響應變化(huà)的(de)時(shí)間間隔,減少重繪次數

  GPU加速

  CSS中以下(xià)屬性(CSS3 transitions、CSS3 3D transforms、Opacity、Canvas、WebGL、Video)來(lái)觸發GPU渲染,請合理(lǐ)使用(yòng)。

Copyright 大(dà)連網龍科技 版權所有   html - txt -

電話(huà)
客服
目錄auth下(xià)缺少key.txt,請前往官網獲取授權