导出Excel超时优化
前言
最近遇到两个模块导出功能超时,数据库连接超时时间为30秒,查询和导出是共用的部分代码.页面查询不会超时,是因为页面查询是分页的,一页只有几十条.下面说优化思路.- 导出由Entity Framework(EF)改为Dapper
- 原先后台返回数据,使用Sheet.js创建Excel,改为后台创建Excel再去下载
查询EF改为Dapper
这一块不在使用EF查询,改为Sql使用Dapper查询,移除在数据库中计算和拼接字符串.计算和拼接的逻辑,改为代码中循环处理,避免数据查询超时.优化之后的sql,查询在10秒左右.修改创建Excel方式,后台实现
本以为通过第一条方式,导出应该没有问题了,谁知道系统更新后,在Edge浏览器中还是无法导出,发现导出的数据返回了,在前台由Sheet.js创建Excel,因为数据比较多,导致Edge浏览器出现无响应,在Firefox中表现要好不好,于是边着手改为后台创建Excel,使用NPOI组件(开源免费),这一块改为后台任务处理,在创建Excel完成后,在通知去下载Excel文件.
秋风
2023-04-16