开发者社区> 问答> 正文

WEB开发下载服务器上面的报表怎么防止数据量过大导致超时

问题
需要服务端生成报表,由于数据量过大。往往会导致下载过程中504错误。下载流程已经最优化了。
目前解决方案
前台点击下载报表,发起一个异步请求。后台处理完数据以后。把数据通过邮箱的方式发给下载者。
有没有其它更加好的办法,可以解决这个问题?

展开
收起
蛮大人123 2016-02-27 17:55:33 5181 0
2 条回答
写回答
取消 提交回答
  • 1. 采用java提供的gzip压缩类 2. 大文件上传到专门的文件服务器,通过文件服务器提供下载功能
    2019-07-17 18:49:08
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪

    根据自己的实际情况主要
    1.前台异步提交一个请求,后台进行异步组合报表。然后通过1. 邮件的方式通知用户2. 通过定时器将消息PUSH给用户,让用户去相应的地址上下载
    2.查询时间精确到秒。在用户请求之前,先告诉用户在这个时间段订单个数。我们可以设定一个合理的值来提示用户(改动最小)
    3.采取任务的形式,前台提交一个任务给后台,后台创建一个任务,并且存入数据库。前台可以每隔30s向后台请求,获取任务的状态,以防止超时。相应的前台有一个loading框(这里也可以改成将文件的生成过程放在服务端,然后这里给用户返回的是一个连接,用户可以直接点连接来下载文件)(这个类似使用AJAX的长连接模式)
    4.把分析过程放在服务端。服务端起一个定时任务,隔段时间去分析这些数据。直接生产文件放在服务端。可以提供给用户一个下载列表直接提供给用户下载
    5.优化流程,采取dubbo批量数据请求。采取dubbo异步请求。多线程处理数据。多个dubbo服务合并(性能优化)

    2019-07-17 18:49:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
如何运维千台以上游戏云服务器 立即下载
网站/服务器取证 实践与挑战 立即下载
ECS计算与存储分离架构实践 立即下载