最近在公司的项目,需要对数据进行导出,一直倾向于从前端js导出,主要想法是:
1. 分布式计算能力考虑,采用前端导出,将写文件等操作压力分散到各个用户电脑上进行,减少服务器开销;
2. 由于后台采用JSON格式输出,希望保持后台微服务提供数据的一致性,不想提供太多特殊返回的接口,而且已有的json接口,已经可以提供全部导出需求,包括外键都已经关联了。
3. 前端通过分页方式查询数据并存储,不会导致占用服务器过大内存,根据当前页号和总页数,可以方便的显示进度,前台导出可以方便的进行中止。
同时后台导出要考虑的问题也比较多:
1. 服务器压力问题,过大数据不能一直占用CPU;
2. 会不会导致前端浏览器假死?
3. 是不是要先在服务器创建存储文件,在让用户下载的更好处理压力问题,可以将导数据等待间隔加的更长,不用让用户一直等待在一个页面。