Sooner 工作模式分别为 Local Only 和 Cloud Only
之前尝试推出 Hybrid 模式的时候遇到了问题
Hybrid 模式工作原理实际上就是云加本地,App 每5秒进行检测网络连接,不通的话就直接加载本地数据库,反之就加载云端数据库。当在运行中网络改变或者刚打开 App 的情况下,进行一次同步。所谓同步其实也只是下载云端所有新数据,然后和本地比较更新时间,保留最新的数据后再上传到云端。
但是实测一段时间后,发现这样有几个问题,一是网络检测不可靠,经常出现同步失败的情况,二是测试时用的国外服务器,经常出现同步时间过长的问题,三是等待时间不确定,没办法提供进度,可能导致用户心理上认为同步并不可靠
现在暂时禁用了混合模式的选择,打算改为同步模式。
保留之前的同步代码,但是不再自动检测网络情况同步,添加一个同步按钮在顶部搜索框,当已经为最新的时候就显示为绿色云图标,反之显示黄色同步图标。用户根据自己的网络情况手动选择是否进行同步操作。另外,保留每次启动时的自动同步操作,但是不再在前台运行,并在搜索框下方显示一个云同步的进度条。由于本地读取基本上不耗时间,而用户又启用了云模式,所以可以做成每次刷新都检查是否为最新数据。这样理论上基本不会增加额外的同步时间,而且对于用户来说,看着一个没有进度的加载动画和一个实在的进度条相比,心理上确实会好很多。
另外,设置了新的服务器,位于北京阿里云,从硬件层面可以减少延迟。阿里云那个99一年的服务器性能很烂,所以把阿里云用于代理服务器。从家里的服务器通过 frp 连接到阿里云上,再由阿里云上的 Nginx 反代至公网。2C2G可能对于跑后端有点小,但是跑转发是绰绰有余了。另外本地分配了6核心10G内存,至少短期内根本不用考虑性能问题。