首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >处理耗时的动态生成报告下载的最佳方法是什么?

处理耗时的动态生成报告下载的最佳方法是什么?
EN

Stack Overflow用户
提问于 2013-09-03 21:18:27
回答 1查看 81关注 0票数 1

一个网站是提供不断更新的内容(如股票交易所),需要生成报告按需和文件下载的用户。用户可以根据大量的参数定制下载的报表。

处理高度自定义的报告下载文件的最佳实践是什么(.xls)?如何缓存和提高性能?

值得一提的是,数据存储在RavenDb中,预期报表将处理100 K的结果大小。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-03 21:45:45

以下是一些提示:

  • 确保您有在RavenDB中定义的静态索引,以匹配所有可能的报告。您不希望为此使用动态生成的临时索引。
  • 可能一个或多个参数将极大地改变查询,因此您可能有一些条件逻辑来选择要运行的几个查询中的哪个。对于不同的分组尤其如此,因为它们将需要一个不同的映射-减少索引。
  • 选择是否要使用SkipTake运算符使用标准分页限制结果集,或者是否要流无界结果集
  • 无论您构建实际的报表,都要在内存中完成。不要先把它写到磁盘上。管理文件权限、锁和清理是不值得的。此外,如果服务器耗尽磁盘空间,则可能会导致服务器瘫痪。
  • 最好是在一个步骤中构建响应并将其流到用户,这样就不需要服务器上的大量内存。确保您理解C#中的C#关键字,并尽可能直接使用IEnumerableIQueryable。不要尝试使用.ToList().ToArray(),这会将整个结果集放入内存。
  • 关于缓存,您可以考虑使用像梅卡奇这样的前端缓存,但我不确定它在这里是否会对您有所帮助。您可能希望数据库中的数据尽可能准确。引入任何类型的缓存都需要您了解如何以及何时重置该缓存。请记住,Raven已经内置了几个缓存层。先构建没有缓存的解决方案,然后在需要时添加缓存。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18601666

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档