强制更新

1. 什么是强制更新

当某个qp包希望用户快速下载到时,可以使用强制更新。 强制更新是为了解决出了故障或者希望某个版本(业务做活动)的QP 包能快速被更新到而设计的功能,使用起来也相当简单,只需要在发布QP 包的时候,选中强制更新选项即可。

2. 如何使用

详情查看如何使用强制更新

3. 使用效果

那么强更的效果怎么样呢?直接上图

image image

可以看出不管是iOS 还是Android, 都在2小时内达到了90%左右的更新率。这比起普通的更新实在快太多了,还是来张普通更新的图,大家感受下

image

相对于强更,默认更新会比较慢,更新率通常7,8个小时后才能稳定在75%左右。

原理其实就是对当前发布版本的QP包做一个强更的标记,客户端在检查更新的时候,获取到这个标记之后,会缓存下来,直到打开业务页面的时候,查一下缓存,如果是强制更新,就先更新完再进业务,打开业务页面时的流程,如下图所示。

4. 是不是每次发版都选择强更?

首先答案是并不是。

看到强更的效果如此好,大家肯定不免会想,要不我每次发布都选择强制更新,这样更新率多高啊。

其实我们是不建议每次都选择强更的,因为强更会让用户体验变差一些。

根据设计,强更就是在打开业务的时候,要等新版本的qp包下载完了再进,这样如果网速慢的话,页面会一直(5秒会超时)loading 中。而普通更新的话,如果发现本地有qp 包,为了用户体验,会优先加载老的qp 包。同时在后台线程下载新的qp 包,保证下次能用上新的。这也是为啥普通更新的更新率没有强更高的更本原因。

基于以上分析,大家用的时候要慎重选择: 只有在特别需要强更的时候,才选择强更,如果项目本身和前一个版本兼容的,就没必要选择强更了。毕竟用户体验很重要啊!

5. 强制更新的设计原理

原理其实就是对当前发布版本的QP包做一个强更的标记,客户端在检查更新的时候,获取到这个标记之后,会缓存下来,直到打开业务页面的时候,查一下缓存,如果是强制更新,就先更新完再进业务,打开业务页面时的流程,如下图所示。

image

我们为了保证页面打开的速度,没有在每次打开页面都去检查是否强更,而是通过一个论循的方式,每隔5分钟全量检查一次更新,然后将检查结果进行缓存。这样做的目的是因为,检查更新需要耗时,而我们期望更快的页面打开速度,不想因为少部分的更新情况而让所有用户所有时间都去先检查一次更新,所以我们的强更方案是牺牲部分更新率的,如下图所示。

image