app 初始化时需要通过接口获取上千个独立的配置项,如何优化?

2024-09-02 10:33:02 +08:00
 aboutboy

正在开发一个 app ,用户在使用 app 访问服务时,需要根据对应的服务从后端获取对应的配置文件( json 格式)。

一共有上千个独立的配置项。

目前是当 app 第一次启动时,会首先通过接口查询配置项清单,然后再依次对各配置项进行请求获取。

这样的问题是,一个 app 就会向后端发起上千个请求。而且可能需要十来分钟甚至更长时间才能把全部配置拉下来。

这样一方面对后端服务器造成压力,另一方面影响用户体验。

如果把配置全部打包在一起的话,大概40-50MB左右。

有些配置项还会更新,这就需要app 在后续的运行过程中对有更新的配置项进行更新

请问大佬们有什么好的思路?

11933 次点击
所在节点    程序员
106 条回复
yyyyyyh
2024-09-02 10:49:29 +08:00
一个客户端就是上千请求。。。 100 个客户用 ,对后端来说岂不是 10W 的并发了。

如果还有更新的话, 建议用实时通讯的方式会好一点。

MQTT 或者 websocket 就当你在做一个 IM 。
GotKiCry
2024-09-02 11:03:23 +08:00
一个 app 向后端发起上千个请求?你确定该优化的不是后端逻辑吗
onichandame
2024-09-02 11:10:04 +08:00
渐进式不行吗?这上千个配置项既然是独立的,那应该是各自影响各自的页面,为啥要一次性全拉下来?进首页就只拉首页的配置,进登录页就只拉登录页的配置。我感觉现在的梭哈式设计是前端的锅。。
shadowyue
2024-09-02 11:10:20 +08:00
上千个配置马上就要用吗?按需加载吧
cweijan
2024-09-02 11:12:38 +08:00
先把程序员优化了吧
wxw752
2024-09-02 11:14:27 +08:00
大佬们的脑子已经宕机了😰
horizon
2024-09-02 11:14:49 +08:00
@onichandame #3
明显是后端配置项设计的问题
flytsuki
2024-09-02 11:18:58 +08:00
这。。。人都麻了
liuyx7894
2024-09-02 11:20:29 +08:00
比较好奇什么 APP 会需要这么多配置项
liuidetmks
2024-09-02 11:22:47 +08:00
既然已经这样了,
把配置当做静态文件,放在 oss 上吧,让 app 去刷吧
业务能稳定运行最重要
nice2cu
2024-09-02 11:22:59 +08:00
按需请求
合并请求
后端配置存储走缓存
bootvue
2024-09-02 11:23:37 +08:00
json 放到 oss 上 后端更新
onichandame
2024-09-02 11:24:48 +08:00
@horizon 后端可以怎么优化
RightHand
2024-09-02 11:28:47 +08:00
按需加合并呗,这就是后台偷懒,不是什么都要原子化的
Hilong
2024-09-02 11:32:29 +08:00
这接口设计有毒吧。搞个 bff 层聚合一下啊
Puteulanus
2024-09-02 11:34:47 +08:00
把默认的全量配置都内置在 App 里,然后你们服务器那边每次改的时候打个版本,App 拉更新的时候根据版本号只增量拉修改了的配置项( patch )
ala2008
2024-09-02 11:35:25 +08:00
说实话,业务是不是不合理
cinlen
2024-09-02 11:38:59 +08:00
能否分享一下,什么情况下 app 一启动就需要 40~50MB 的配置量?
horizon
2024-09-02 11:40:54 +08:00
@onichandame #13
首先把配置项分分类,不是所有的配置项都要实时从数据库里查吧
一些通用的可以提取出来,像上面说的放到 OSS 里
每次启动的时候从 oss 里获取咯
另外一些实时获取的,接口优化聚合一下,也分分类,首页只获取必要的
lasuar
2024-09-02 11:43:11 +08:00
按 描述,判断 OP 几乎是个后端新手水平。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1069523

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX