背景
由于手上的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方案。