当前位置: 首页 > 知识库问答 >
问题:

javascript - 关于软件更新的一些问题?

高寒
2024-06-15

问题1:
类似微信这样的安装在用户个人设备上的软件,调整了后端接口服务后,需要用户更新设备上的软件,如果用户没更新,还是能正常使用,一般这种是采取什么方案处理的?是调整后的接口服务,仍然支持旧版本的软件使用吗?

问题2:
假设我有个web系统,全国各地都有门店在使用,有些门店需要使用频繁更新后的web系统(),有些门店只需要偶尔更新web系统。这些门店使用的web系统都是同一个域名。有什么方案,在某次更新时,只对部分门店使用的web进行更新,其他还是仍然使用旧的web系统。

共有2个答案

陈知
2024-06-15
  1. 接口版本管理,比如目前 v1.0,那么接口就是 /api/v1/get/user
  2. 当新版本发布的时候,比如 v1.1,接口出现变化,就 增加 一个接口 /api/v1.1/get/user 提供新的功能。
  3. 但是 v1.0 的接口仍然提供服务。
  4. 通过统计 v1.0 客户端的占比,推送更新通知,让用户逐步升级到最新版。直到旧版没人使用,定一个截止日期,下线 v1.0 接口。
  5. 如果要根据用户属性提供不同服务,一般来说在业务代码里处理,不用上面的版本管理方式。
翟棋
2024-06-15

问题1回答

类似微信这样的软件,在调整后端接口服务后,通常需要用户更新设备上的软件以保证最佳的用户体验和安全性。然而,为了照顾到那些没有及时更新的用户,开发者通常会采取以下策略:

  1. 版本兼容:调整后的接口服务会设计得兼容旧版本的软件,以便在一段时间内,新旧版本的用户都能正常使用。
  2. 逐步淘汰旧版本:随着时间的推移,开发者会逐步淘汰对旧版本的支持,最终强制用户更新到最新版本。
  3. 提醒用户更新:软件会在适当时机提醒用户更新,比如启动软件时、有重要功能更新时等。

所以,是的,调整后的接口服务往往会设计得兼容旧版本的软件使用,以便给用户足够的时间来更新他们的软件。

问题2回答

对于需要给部分门店使用的web系统进行更新的情况,可以考虑以下方案:

  1. 特性开关:在web系统中加入特性开关,通过配置开关来决定是否启用新功能或更新。对于需要频繁更新的门店,可以打开相关特性的开关;对于只需要偶尔更新的门店,保持开关关闭即可。
  2. 版本控制:为每个门店或门店群组分配不同的版本。当需要更新某个门店或门店群组的web系统时,只更新对应的版本。通过URL路由、请求头或后端逻辑来区分不同版本的请求,并返回对应版本的响应。
  3. 蓝绿部署或A/B测试:使用蓝绿部署或A/B测试的策略,同时运行新旧两个版本的web系统。通过负载均衡器将部分门店的请求路由到新版本,其他门店的请求路由到旧版本。这样可以逐步验证新版本的稳定性和效果,并逐步扩大新版本的使用范围。
  4. 门店配置:在web系统的配置中,为每个门店指定其使用的版本或功能集。根据门店的配置,web系统返回对应版本或功能集的响应。

这些方法可以根据实际情况灵活组合使用,以实现对部分门店使用的web系统进行更新的需求。

 类似资料:
  • 本文向大家介绍JavaScript中关于base64的一些事,包括了JavaScript中关于base64的一些事的使用技巧和注意事项,需要的朋友参考一下 base64 其实是一种编码转换方式, 将 ASCII 字符转换成普通文本, 是网络上最常见的用于传输8Bit字节代码的编码方式之一。 base64 由字母 a-z 、 A-Z 、 0-9 以及 + 和 / , 再加上作为垫字的 = , 一共6

  • 关于cesium的一些报错问题,现在出现这些报错 还有上下文丢失的情况,因为不懂cesium,有人帮忙排查下问题吗

  • 一个学习案例中遇到的问题 index.html index.css index.js 上述代码中, 我在循环里为每个 .box 添加点击事件, 但是在事件里的i始终是循环体执行完毕后的结果 3, 为什么会出现这种情况? 因为之前写代码在 onclick 事件里基本都是用 this, 或者用 let 来代替 var 来定义变量, 所以绕过了这个坑 但现在遇到了这样的 bug, 还是想问下导致这个问题

  • 我对使用REST API的订阅功能有一些疑问。我们已经使用“快速结账NVP/SOAP集成”实现了定期支付,但对我们来说这不是最佳选择,因为: Webhooks比IPN消息更容易、更可用; 我们不能强迫顾客从PayPal余额中付款。 所以我想用REST API重写。我认为流程会是这样的: < li >用户按下按钮,我们第一次请求获取身份验证令牌; < li >创建计费计划; < li >启用计费计划

  • 上面是代码,想执行'person1.func3()'。 结果如下图

  • 结果: 问题: 1.lis,ele=>ele.textContent中我把ele.textContent换成了lis.textContent结果出来的是一个undefine的集合,是为什么? 2.lis,ele=>ele.textContent我是否可以理解为Array.from(arr,function),然后返回元素的文本内容? 3.该怎么理解lis和ele之间的关系呢?(因为看到很多案例都是

  • 我不熟悉python,但精通java。现在我在python3.5上训练时面临一个恼人的问题,我有这样一个src结构: 在main.py中: 在modulescript.py: 在BaseModel.py: 在BaseAction.py中: 在ModelImpl.py中: 在ActionImpl.py中: 现在,当我输入python3main.py在终端,我得到打印结果: 但如果我输入python3

  • 本文向大家介绍关于Mybatis-Plus字段策略与数据库自动更新时间的一些问题,包括了关于Mybatis-Plus字段策略与数据库自动更新时间的一些问题的使用技巧和注意事项,需要的朋友参考一下 字段策略 0:”忽略判断”,1:”非 NULL 判断”),2:”非空判断” 问题描述: 当字段策略为 0 “忽略判断” 的时候,如果实体和数据库有字段是需要自动更新的,例如update_time,更新某条