做者:謝維
閱讀時間:15~20 min前端
Now交友運營活動此前主要注重提高開發效率,在性能優化這塊有所欠缺。近期在Now交友的常規活動項目中嘗試接入了PWA-PLUS方案和Aegis測速方案,並在Now交友週年慶我的賽活動中上線驗證,本文整理了接入效果對比和數據分析,並總結接入心得和問題,供你們參考。android
PWA-PLUS方案是咱們團隊針對PWA技術提出的一套性能優化方案,能夠利用
ServiceWorker
的能力對頁面加載資源進行緩存,提高頁面加載性能。(目前僅在騰訊內部開源,後期會開源)webpack
Aegis則是咱們團隊開源的一站式前端監控平臺,涵蓋了日誌上報,錯誤監控,性能監控,資源測速等功能。「首屏渲染時間」 的計算大多數時候是依靠人工打點,但Aegis提供了一種「無打點測速上報」的思路,能夠簡化測速上報的開發。git
接入項目:NOW交友常規活動 應用場景:NOW獨立版交友房間掛件及活動頁 接入方案:PWA-PLUS-CSR(前端本地渲染)及Aegis測速(無打點測速上報)github
由於PWA接入是在NOW交友週年慶活動上線後進行的,採用了逐步接入的方式,以保證不對現網形成異常影響。web
活動於9月12日上線,9月29往後下線,期間於9月18日接入Aegis測速,9月20日接入PWA-PLUS靜態資源緩存,9月24日接入PWA-PLUS非直出HTML緩存。json
下面是針對不一樣階段的數據對比分析。緩存
接入前(ms) | 接入後(ms) | 提高百分比 | |
---|---|---|---|
僅緩存靜態資源 | 2600+ | 2400+ | 大約8% |
完整CSR方案(加上接入HTML緩存) | 2600+ | 2000+ | 20+% |
從測速數據的變化趨勢來看,接入PWA-PLUS方案後,首屏耗時呈減小趨勢,大約提高了20%+(500ms左右)。性能優化
接入前(ms) | 接入後(ms) | 提高百分比 | |
---|---|---|---|
接入靜態資源緩存 | 400+ | 300+ | 大約25% |
附Aegis測速對靜態資源耗時測速數據一覽(活動中間有休賽期,這裏舉一些有效日期的數據):架構
日期 | 請求成功率 | 平均速度 |
---|---|---|
09-18 | 99.97% | 400ms+ |
09-20 | 99.98% | 350ms+ |
09-21 | 100% | 280ms+ |
經過分析數據,接入了PWA-PLUS方案後對靜態資源耗時有不錯的優化,提高百分比大概是25%。
由於當前Now交友常規活動的掛件和活動頁在一個統一項目下的,因此在加載掛件後,活動頁的靜態資源能夠被緩存。可是後面Now交友活動開始採用多掛件模式,掛件項目會獨立出來,這樣的話,掛件的離線包與活動頁離線包不一樣,作不到提早緩存活動頁資源,但PWA-PLUS的二級頁面緩存方案卻能夠作到,這是優於離線包方案的一個點。
PWA的覆蓋率也是一個比較關注的問題,對於Now交友房間內H5頁面的場景,統計的ServiceWorker上報數據以下:
百分比 | |
---|---|
SW支持率 | 70%+ |
SW註冊成功率 | 90%+ |
SW命中緩存率 | 90%+ |
能夠看到PWA的總體覆蓋率已經比較高了,可以覆蓋大部分的用戶。
PS: 這裏的SW命中緩存率上報的是JS的命中率,HTML緩存命中率須要特殊打點,此次未加上
PWA-PLUS的接入不是很複雜,具體接入方式能夠參考PWA-PLUS官方文檔
(後期會開源)。
本項目採用是PWA-PLUS的CSR方案(前端本地直出渲染方案),方案的原理在PWA-PLUS分享和官網都有闡述,這裏再也不贅述。
下面分享一下接入心得,供你們參考:
pwa-plus-plugin
是PWA-PLUS提供的用於爲項目構建出sw.js的webpack插件,其中配置有不少參數,要根據實際項目狀況調整
Now交友常規活動項目
的構建配置僞代碼:
PWA數據上報推薦上報項
作的PWA數據上報:這裏沒有對不一樣操做系統做區分,若是須要分別統計iOS和android的狀況,此處上報代碼應相應調整
爲了驗證接入PWA方案後的優化效果,必定要完善項目的測速上報。
正好Aegis近期作了測速上報相關的功能,並且接入比較簡單,Now交友常規運營活動項目此前也沒有接其餘測速,就果斷嚐鮮採用了Aegis的測速方案。
Aegis測速方案的接入一樣很簡單。
詳細接入方式參考Aegis官方文檔
,本項目接入過程以下:
package.json依賴最新的Aegis SDK 最新的Aegis SDK提供了無打點測速上報能力
修改Aegis初始化代碼 主要有關注兩個點,一是儘量早的初始化Aegis對象,二是配置啓用測速上報能力
在Aegis管理平臺查看測速數據 在項目上線後,就能夠在Aegis管理平臺查看到相關的測速信息。 3.1. 頁面測速
3.2. 接口測速
3.3. 靜態資源測速
從頁面測速、接口測速和靜態資源測速3個維度,基本知足對前端性能監控的訴求,針對不一樣方面,分別進行優化是個很好的思路。好比頁面測速優化能夠採用一些緩存方案(如PWA緩存方案),接口測速則關注如何提高後臺服務能力,靜態資源測速要考慮是否使用了CDN,CDN的使用是否正確等等。
PWA-PLUS方案爲前端性能優化提供了一個新的選擇,那麼PWA-PLUS方案具體是如何利用PWA能力實現性能優化的呢?請期待下一篇推送,pwa-plus架構篇。
關注【IVWEB社區】公衆號獲取每週最新文章,通往人生之巔!