背景
由于手上的Android app需要改版,用户流量越发增加,H5活动页面、展示页面也陆续地增加。所以打算基于native实现缓存方案加速。
架构
我们的架构是hybrid app,只有首页是native实现的,下面的几个条目作为H5的入口。
(为避免广告嫌疑,已经屏蔽相关字眼)
解决方案
上网查了一下hybrid app的H5加速方案,详见:http://trock.lofter.com/post/117023_e8e175
方案一:使用manifest,但是坑比较多,而且也不是最好的方案,一个文件改,所有都要更新。
方案二:打包下载前端资源,Android本地的解压。然后native和H5用spdy协议请求页面。Android可以实现增量更新。
我的疑惑
关于方案二是具体实现方法,我在网上搜索不到,而且很疑惑:
1.前端资源打包,是在服务器上发生的吗?
2.客户端如果知道有更新,对比md5,但不是说下载打包好变成一个zip包吗?那它怎么样去识别个边页面的更新?
或者我的理解完全错了?
有经验的同学请指教,谢谢!
我沒有混合APP的開發經驗,只是有不少功能我會選擇用WebView+頁面的形式去呈現。
所以針對題主的目的,是減少訪問的流量,本身WebView就有快取的機制,不知道為什麼還需要先去下載圖片等相關資源,如果打包針對資源進行比較,那麼一張圖片修改了不是說整個頁面的資源都需要重新下載嗎?
因為我這邊是採取本地html頁面和網路圖片的形式,所以我這邊每次需要更新只是本地的html頁面,圖片或CSS和js都還是在後端。 WebView會進行適當的緩存,鑑於不太清楚題主混合應用的開發形式所以也不太好發表。
一個CDN不接解決問題了。 。
我負責前端的開發。
跟客戶端同事請教,得到兩種方案:
①後端對不頻繁更新的頁面進行打包,客戶端解壓;
②對於頻繁更新的頁面,後端發送一個list,這個list有檔案的名稱、版本號碼、md5。客戶端下載這個list,進行diff操作,依照一定的規則進行下載、取代、刪除檔案。
跟後端同事請教,得到如下資訊:
這個app的主要業務在後端,現在的流量量級,就算改版後,5倍的量級也遠遠未達到1000qps,所以現在的資源不跑CDN也可以。前端的效能優化現階段不是很需要,對於檔案目錄和程式碼的重構更為重要。
綜合方案:
現階段不需要對效能的最佳化作太多考慮,所以從客戶端同事得到的方案可能要到後期才能實行。 @zzxxasp 同學提到的方案即用webview快取已經夠用了。也可以結合@TIGERB 同學的CDN方案。