在此之前我们先了解下小程序的运行机制。

小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」。

「热启动」

假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将后台态的小程序切换到前台,这个过程就是热启动。

「冷启动」

用户首次打开或小程序被微信主动销毁后再次打开的情况,此时小程序需要重新加载启动,即冷启动。

『 对于小程序版本更新的思考 』

小程序冷启动时,如果发现有新版本,将会异步下载新版本的代码包,并同时用客户端本地的包进行启动,即新版本的小程序需要等下一次冷启动才会应用上。

在小程序的开发过程中,我们经常会遇到一种情况,当修复一个紧急bug或者上线一种新功能时,产品希望用户打开小程序的时候就是最新版。

或许你想到了用wx.getUpdateManager这个API,在小程序启动的时候监听有无版本更新,并且能够强制小程序重启并使用新版本。

但是这会导致一个用户体验问题,每次有新版本包时都会提示用户更新,对于需求迭代更新速度快的小程序特别不友好,非常打扰用户。

转转是一个日活几百万的小程序,业务线分了好多条,每天都有可能会发布新版本甚至不止一个。迫切需要实现版本更新管理。

我们就想着可以通过接口获取需要更新的版本信息,根据返回结果再判断是否需要重启使用新包。

鉴于转转有多条业务线,希望当用户不进入某条需要更新的业务线时就不用强制更新,只想实现以页面为粒度判断是否需要更新。下图是我们设计的思路:

但是这就涉及到需要RD帮我们存储数据、提供接口获取数据。当时快年底了RD资源很紧张,所以就想着不用RD,前端能不能自己做?

于是,云开发,正式登场......

『 云开发提供的能力:数据库 』

云开发提供了一个JSON数据库,让我们可以在控制台创建一个版本信息的集合,在里面插入需要更新的版本信息。

『 云开发提供的能力:云函数 』

云函数让我们能够自己写函数实现读取数据库的功能。每次请求时,我们只返回前三条记录,3条记录的版本都高于小程序自带版本的话,说明用户也很久没打开过小程序了,直接提示用户更新。

一开始我们的设计思路是每个页面打开时都去调云函数判断是否需要更新当前页,转转的页面打开次数每天都是千万级别,当时还比较担心云开发能否顶住压力。

『 经过验证,云开发的抗压能力杠杠的,完全没问题,点赞!!!』

就这样,不依赖RD,完美解决版本更新的问题,当然设计思路还有待改进,但云开发让我们没有了后顾之忧。而且我们还推进公司别的小程序采用我们这套方案,大家都认为不错。

『 总  结 』

自从团队用了云开发,有三点印象非常深刻:

1、让前端不再依赖后端,大大提高人力资源利用率。

2、控制台编辑数据库数据非常方便。

3、高可用高并发高性能。转转二手交易网云函数调用次数日均千万级别、运行时间仅有22.722ms。

如果你有关于使用云开发CloudBase相关的技术故事/技术实战经验想要跟大家分享,欢迎留言联系我们哦!比心!


(关注了我可以说是相当优秀了)

可以判断用户打开页面次数吗?_看前端如何单枪匹马实现小程序页面级版本控制...相关推荐

  1. 前端如何单枪匹马实现小程序页面级版本控制

    在此之前我们先了解下小程序的运行机制. 小程序启动会有两种情况,一种是「冷启动」,一种是「热启动」. 「热启动」 假如用户已经打开过某小程序,然后在一定时间内再次打开该小程序,此时无需重新启动,只需将 ...

  2. 微信小程序嵌套h5页面,h5页面返回小程序,小程序和h5的页面和交互方法,h5点击分享小程序页面

    相信大家在做小程序的时候有些需求会需要嵌套h5页面 正常的h5页面嵌套很简单就是一个web-view然后放入h5链接就可以了 <web-view src="http://www.goo ...

  3. 小程序页面之间数据传递的五种方法

    小程序页面之间数据传递的五种方法 目录 小程序页面之间数据传递的五种方法 **使用 `wx.navigateTo()` 时,在 url 中拼接,这种方法适用于数据量少的情况** **使用 `wx.na ...

  4. 微信小程序入门1--新建微信小程序页面

    微信小程序入门1–新建微信小程序页面 在新建微信小程序后会自动生成一个DEMO实例,我们可以在实例中修改自己所需的内容,当内容过多时,实例中的页面不足以满足我们的需求,因此需要新建微信小程序页面. 本 ...

  5. uni.$emit和uni.$on用法;uni-app微信小程序页面通讯;微信小程序页面通讯

    uni-app的官方api uni.$on 场景: 微信小程序两个页面甚至多个页面之间,可能共用一个参数或者需要相互传递使用参数.例如页面A点击按钮,需要把A页面的item数据,赋值给页面B的form ...

  6. 如何在data visualization 中update svg_如何操作小程序页面中data数据区中的数据

    前言 在微信小程序中,每一个页面都有一个独立的js文件,用来实现该页面的业务逻辑.这个js文件通常采用Page()方法来对页面进行注册.其中系统为页面设置了一个名为data的区域,用来存储页面的初始数 ...

  7. 微信小程序页面栈超过【10层】之后无法打开其他页面原因

    微信小程序路由跳转有个隐藏的坑,就是 wx.navigateTo打开新页面,最多只能打开10个,超过10个之后就没反应,控制台也不会报错. 方案一:简单粗暴-navigateTo不行,用redirec ...

  8. ios 微信浏览器 预加载_小程序页面预加载技术

    lightning-load-project 集成方式 看不效果览图的话,请看博客 https://blog.csdn.net/sinat_27612147/article/details/80802 ...

  9. 安卓menu页面跳转_微信安卓版7.0.14内测!“发现小程序”页面大改版

    除了安卓用户心心念念的"群备注","发现-小程序"面板也有大变动~ 话不多说,赶紧下载内测版体验新功能(后台回复[7014],即可获取内测版下载链接)群备注:虽 ...

最新文章

  1. 2019春季学期期末总结
  2. JavaWeb:JDBC之数据库连接池
  3. 中文网页重设与排版:TYPO.CSS
  4. 欧几里得与扩展欧几里得总结
  5. 这家公司疑被查封、员工被带走,股东李笑来称“做天使投资人真不容易”
  6. rust笔记7 rust中的包管理
  7. 对俄罗斯应用“一刀切”,乌克兰知名开发商推出 Mac 专用反间谍软件
  8. linux中shell curl命令获取http状态码--------强大的网络传输工具
  9. CDays–5 习题二(利用Python科学计算特性,使用常用计算符)及相关内容解析。...
  10. 使用 jQuery Mobile 和 CSS3 实现响应式设计
  11. lombok的详细使用
  12. 交通灯c语言单片机程序,基于51单片机的一个简单交通灯程序
  13. ug冲模标准件库_基于UG建立模具标准件库
  14. 黄杏元《地理信息系统概论》考研复习考点精讲(二)
  15. python数据分析软件包_Python数据分析软件包介绍
  16. 北京某ERP公司产品助理专业一面
  17. 周红c语言答案,周红
  18. msvcr120.dll丢失如何修复
  19. 西安电子科技大学计算机期末考试试题答案,西安电子科技大学上期期末考试计算机基础.doc...
  20. final修饰的变量必须初始化吗?

热门文章

  1. 并查集 | 1107
  2. attr 和 prop 区别
  3. C++之路进阶codevs1242(布局)
  4. archlinux 更新错误 Unrecognized archive format
  5. SQL查询字段约束名的语句
  6. 逆向破解之160个CrackMe —— 007
  7. python基础作业第五天
  8. 让ffmpeg支持10bit编码
  9. 多线程之Thread类
  10. GitHub和Microsoft TFS对比有什么优势