博客 / 詳情

返回

得物技術在搭建會場下的頁面性能優化

得物App內h5的項目都是通過webview打開。對於webview的性能大家普遍的印象就是打開速度比native慢。

對於SPA應用,一個用户打開webveiw訪問h5需要經過如下過程:

  1. 點擊App入口(例如banner等)
  2. 到達新頁面,頁面白屏。
  3. 頁面基本框架出現(骨架屏),但是沒有數據,頁面處於loading狀態。
  4. 出現所有數據,頁面完全呈現。

從程序執行的角度,我們來看一個沒有優化過的webview加載h5的過程:
截屏2021-05-21 下午7.14.33.png
壓縮每一個階段的時間,是性能優化的關鍵點。

WEBVIEW

結合App的webview我們採用了兩個優化手段:

  • 靜態資源內置:js,css等靜態資源內置在App。App通過攔截請求直接返回本地文件,當然涉及到一系列的刷新緩存的策略。離線文件命中率當下在40%多。
    截屏2021-05-21 下午7.15.12.png

截屏2021-05-21 下午7.15.44.png

  • html預加載:App冷啓動會主動拉取關鍵入口的html做緩存。

如下圖秒開率有15%的提高。

截屏2021-05-21 下午7.16.14.png

H5優化

SPA與SSR

SPA會場下頁面渲染整個流程:
截屏2021-05-21 下午7.17.02.png
SSR會場下頁面渲染整個流程:
截屏2021-05-21 下午7.17.27.png
SPA與SSR在FMP上的表現,中間的凹槽是線上切到SPA的情況,可見SSR對於秒開有平均15%的提升。
截屏2021-05-21 下午7.17.51.png
截屏2021-05-21 下午7.18.10.png

加載時序優化

分析頁面的html,我們發現一些js腳本 block了html的加載。

截屏2021-05-21 下午7.20.06.png

截屏2021-05-21 下午7.20.18.png
減少三個block的script的加載。

資源體積

圖片優化

webp

webp能夠達到90%壓縮率,其重要性不言而喻。

現有方案在ssr直出的組件沒有webp的能力。即使端上支持webp也加載了jpg或者png的圖片,導致資源太大。而在ios的14版本後ios有了支持webp的能力,諮詢了IOS同學,14版本的佔比至少百分之七八十。

方案

node端直出所有圖片都為webp。在端上做一次webp的check,不支持則降級到原jpg或者png。

效果

不支持webp的手機:注意頭圖。
no_webp.gif

webp.gif

無損壓縮服務

從圖片源頭上解決圖片過大的問題,使用了開源方案imagemin/imagemin。
會場傳圖統一收口交互,避免同一張圖多次上傳的情況。平均壓縮率60%。

截屏2021-05-21 下午7.22.32.png

包體積

  • 無用自定義組件的刪除 -33k
  • 按需lodash的大小 -24K
  • 神策SDK 通過JS創建script加載。且解決神策sdk的命名空間前置訪問。76 k
  • koa-router的依賴。 -21 k
  • 組件按需加載。
    截屏2021-05-21 下午7.23.13.png

    總資源優化數據

    截屏2021-05-21 下午7.23.53.png

    上線後第一天優化數據

    截屏2021-05-21 下午7.24.17.png

    Lighthouse 打分維度分析結論

    Lighthouse 綜合打分

    優化前

截屏2021-05-21 下午7.25.23.png

第一期優化後

截屏2021-05-21 下午7.26.09.png

截屏2021-05-21 下午7.26.29.png
結論:Lighthouse 相應提升了 20%+。

瀏覽器資源維度數據分析結論

優化前數據:

截屏2021-05-21 下午7.27.05.png
第一期優化後:

截屏2021-05-21 下午7.27.24.png
結論:transferred 提升了 20%。

綜合分析結論

第一期優化根據各種數據彙總,性能整體提升 10%。

SSR組件體驗專項優化

現狀

有些組件在node端沒有直出,且沒有圖片懶加載的能力。

方案

node端直出組件,且屏外的圖片使用懶加載的功能。

效果

涉及以一鍵領券,分會場入口等組件
前:
1.gif
後:
1-1.gif

FMP總效果

經過一系列的努力,App端優化與h5端的優化。我們把頁面的秒開率提高到了40%左右。

截屏2021-05-21 下午7.29.19.png

文|問問en

關注得物技術,攜手走向技術的雲端

user avatar easynvr 頭像
1 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.