Skip to content

设计一个功能,前端实时地检查有没有新版本发布

问题描述

我们的APP会有版本管理,当我们发布新的版本的时候,如果用户不主动刷新是无法访问到最新的版本的。 因此我们想设计一个功能,使得我们发布新版本的时候,用户可以在不主动刷新页面的情况下得到更新。

关键点

这是一个相对开放的问题,旨在考察面试者思考能力,项目经验,以及对于一些基础基础的掌握程度。 这里我列举一些措施, 大家只要言之成理即可。

  • 使用WebSocket, 当发布的时候推送到前端,前端收到通知进行更新操作
  • 前端设计一套算法, 不定时地去服务端询问有没有最新的版本,有的话则进行更新

这里有几个点:

  1. 我们可以直接让后端写一个接口
  2. 我们写一个node层做这个事情,毕竟这个逻辑后端不care.
  3. 我们可以直接将当前最新版本的信息放到CDN中,然后将更新最新版本信息的功能加入到构建中。 比如我们静态资源访问路径为: cdn.lucifer.ren/pageA/index.html, 我们可以把这个文件放到 cdn.lucifer.ren/pageA/manifest.json
json
{
  version : '1.0.2'
}
{
  version : '1.0.2'
}

我们访问这个路径,解析JSON,拿到version字段,通过和本地的version比较,本地version记录方法就很多了, 可以加入构建,也可以放到url中。

关于这个算法,大家可以发挥自己的脑洞。我这里想了一个。 就是根据用户的交互信息和时间来设计一个延迟查询。 如果用户发生了交互行为,比如点击,我就会延迟n秒发送一个查询。如果用户没有任何交互,我就不发送。 当然这个n是可变的,并且如果用户交互比较频繁,也要做一个截流的功能, 比如60秒只会发送一次。

上面提到的更新操作,可以是简单的刷新页面,也可以是直接做diff patch, 不管怎么样,都一定要提醒用户。