前提:查询是复杂耗时的比如要几分钟,但是最后结果的数据量是可控的,一般不超过几百行,也就是没必要分页.然后需要一
个导出excel的功能,当然也可以是导出其他的,道理是一样的.
疑惑:
如果每次导出时重新做查询的话,非常的耗时,感觉是一种浪费.用户已经等了几分钟得出查询结果,为什么还要再等这几分钟呢?不太友好.而且对于后台数据库也多一次负担.
如果每次都缓存下来是不是会违反web的无状态原则?呵呵,我是Web方面的新手:)
我的方案:
开始时是把结果存到session里面,如果点导出就会把最后一次查询结果从session里面取出来,然后导出.后来因为数据太大更新不到数据里面去(数据库用的是SQL Server,是遗留系统),改为存到磁盘上.
这个有个问题,就是如果同一个用户,同时执行几个查询,然后再导出,其实只能导出最后一次查询的结果.我现在想的是,给每次查询生成一个唯一ID作为导出链接的一部分,然后结果以这个唯一ID缓存到磁盘上,这样就可以处理同时打开多个查询的情况.缓存数据进行定期清理,比如每过一小时把超过一小时的缓存数据清理掉.
不知道,我这个方案有什么问题,大家都是怎么处理这种问题的?有什么更好的方案吗?
如何设计复杂统计查询的导出excel功能?
最新推荐文章于 2022-11-04 10:23:24 发布