時(shí)間:2016-02-16 19:02:16
我們在之前的文章中也有不少文章提及移動端頁面優(yōu)化的問題,但大多淺顯不夠深入。
在移動頁面變得越來越酷炫的年代,文件越來越大,和運(yùn)行速度越來越低的情況不可避免,而加載速度低會造成不良影響,具統(tǒng)計(jì):
71%的用戶期望移動頁面跟PC頁面一樣快,74%的用戶能容忍的響應(yīng)時(shí)間為5秒,所以我們必須保證移動端頁面有足夠的速度。
移動頁面的速度跟三個(gè)因素有關(guān),分別是:移動網(wǎng)絡(luò)帶寬速度,設(shè)備性能(CPU,GPU,瀏覽器),頁面本身。
首先,我們要知道,一個(gè)頁面從開始到呈現(xiàn)必須經(jīng)歷的過程,一共四個(gè)過程,如下圖:
?類似這種用戶能明顯感知的,我把它稱為顯性加載,互動頁面都建議加上這種加載方式,它一方面能增加頁面的趣味性,另一方面能讓后續(xù)頁面體驗(yàn)更流暢。
這種在加載張圖片的時(shí)候已經(jīng)預(yù)先加載了第二張圖片,從而使得頁面體驗(yàn)更流暢的方式,我把它稱為隱性加載,這種方式的好處是節(jié)省流量之余又能使得體驗(yàn)增強(qiáng)。
?按需加載是不可或缺的優(yōu)化手段,主要有以下兩種方式:
?對于這種方式,在首屏加載的時(shí)候把首屏的內(nèi)容加載盡量,而位于首屏之外的元素都只在出現(xiàn)在首屏?xí)r才加載,很大程度地節(jié)省了流量,提升了加載時(shí)間。
這種叫響應(yīng)式加載方式,意思是利用JS 或者CSS 判斷分辨率,從而選擇不同尺寸的圖片進(jìn)行引入,這種的好處顯而易見,同樣可以加快加載速度和節(jié)省流量。
這是一個(gè)同一網(wǎng)速下的測試結(jié)果,重定向之所以會比較慢,是因?yàn)樗貜?fù)了域名查找,tcp鏈接,發(fā)送請求。
DataUri在移動端并不如它在pc端吃香,因?yàn)椋?/span>
經(jīng)測試,DataURI要比簡單的外鏈資源慢6倍,生成的代碼文件相對圖片文件體積沒有減少反而增大,而且瀏覽器在對這種base64解碼過程中需要消耗內(nèi)存和cpu,這個(gè)在移動端壞處特別明顯。
在移動端請適當(dāng)使用touchstart,touchend,touch等事件代替延遲比較大的Click 事件。Click之所以慢是因?yàn)閙ousedown導(dǎo)致的:
c)合理使用RAF(requestAnimationFrame)
類似touchmove,scroll這類的事件可導(dǎo)致多次渲染,對于這種事件可以通過以下手段進(jìn)行優(yōu)化:
1、使用requestAnimationFrame監(jiān)聽幀變化,使得在正確的時(shí)間進(jìn)行渲染
2、增加響應(yīng)變化的時(shí)間間隔,減少重繪次數(shù)。
,針對合成/繪制只提一個(gè)優(yōu)化手段:
GPU加速實(shí)際上是大幅減少了合成/繪制時(shí)間,從而大大地提高了頁面速度,但GPU加速有自己的缺點(diǎn):
過多的GPU層會帶來性能開銷,主要原因是使用GPU加速其實(shí)是利用了GPU層的緩存,讓渲染資源可以重復(fù)使用,所以一旦層多了,緩存增大,會引起別的性能問題。
推薦閱讀