90 条回复  ·  778 次点击
FireKey 小成 2024-9-2 16:02:50

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

应用的话配置 copy 一份存本地,配置版本变化时再更新对应项.如果运行中需要及时更新,考虑将配置版本加入 headers 中,版本更新了接口走更新流程
panlatent 初学 2024-9-2 16:06:13

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

纯色背景配上点大字:


”嗨,别来无恙“
”一切即将准备就绪“
”这可能需要几分钟“
”马上就好“
ysw 小成 2024-9-2 16:07:17

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

json 放 cdn ,然后按需加载,应该就差不多了
2owe 小成 2024-9-2 18:02:42

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

按需缓存吧,首先获取一下当前需要更新的配置,只获取有更新的部分
veightz 小成 2024-9-2 18:49:48

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

问题还挺多, 不是单方面的。整体方案就挺奇怪的,感觉没有沟通好设计。。

客户端的问题:
1. 用户体验问题肯定要客户端解决。不可能同步等这份配置吧,这个数据量的下载,反序列化,都是不小的开销。一般来说是同步读客户端缓存,异步刷新数据。  
2. 配置同步做下版本管理, 记录下版本的上一次同步时间。 做好缓存时间控制。

服务端问题:
1. 上千个配置下是同构的吧? 一个读结构不同的配置项 key 吧?  要支持批量的接口。
2. 服务端都做热缓存吧, 有内存缓存的话, 我觉得性能本身倒是还好。 但是目前方案我觉得你们的第一个瓶颈是带宽。
3. 我觉得可以的方式是读 cdn , 配置大概率也不是高频更新的,可以结合 etag 等手段, 确定有数据变更了再回拉。
xiangyuecn 初学 2024-9-2 19:03:41

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

能用上你们的 app 的客户也是倒了八辈子霉🐶
Ritr 小成 2024-9-2 20:38:59

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

什么 APP ,说出来我避雷
shunia 小成 2024-9-2 21:54:52

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

游戏不就是这样的吗?
一万个配置文件也可以做一个更新列表,有更新的才拉,没更新的用缓存。
基本只有冷启动会全量下载,热启动基本很难遇到大量更新的情况。
simo 初学 2024-9-2 22:03:56

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

如果你说的 50M 的配置必须所有人都加载,那就分析下,拆分请求,按需,数据压缩,缓存,cdn 。
murmurkerman 小成 2024-9-2 22:10:05

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

这个明显要用增量更新,可以看看有没有类似于 remote config 的国内替代。没有的话只能自己撸一个。也可以借助 s3 ,oss 实现,s3 文件下载都会返回一个文件内容的 hash 值,可以用 head 请求判断是否更新了。然后就是拉配置的时候需要有一个请求队列,安卓 okhttp 自带,不用担心网络并发。

配置下载也可以加一个分页接口,一次下载 n 项。
最好还是用 protobuff 缩小配置文件传输大小。
返回顶部