0

所以我们运行了一个下线报告。这聚集了登录者下线中的每个人。一些客户的人运行这个没有问题,因为它返回的记录少于 100 条。

然而,有些客户返回 4,000 - 6,000 行,这些行的信息价值约为 8 MB。实际上,我不得不提高我的开发机器上的缓冲区限制来处理大请求。

存储大量数据并帮助防止其连续运行多次的最佳方法是什么?

它可以存储在cookie中吗?会话是不可能的,因为这会占用服务器上的大量内存。

在这一点上,我几乎对任何事情都持开放态度,试图将旧流程更好地简化为更高效的流程。

现在要做的是,它加载整个记录集,它循环遍历记录集,将数据构建到 return_value 单元格中。

变成 jquery/ajax 调用会更好吗?

唯一的主要要求是:

经典的 asp jquery/javascript T-SQL

4

3 回答 3

1

为什么不更改要分页的报表?阶段 1:运行整个查询,但页面仅显示基于所选页面的正确行集。现在您的响应缓冲区问题已解决。第 2 阶段:使用 Row_Number() 将分页移动到查询中,现在您的数据库使用问题已得到解决。第 3 阶段:为用户提供“显示到屏幕”(使用上述方法)或“导出到 csv”选项,您很可能可以导出所有数据,因为 csv 既美观又紧凑。

于 2012-05-31T18:37:13.027 回答
0

鉴于对Web 浏览器的 cookie 密钥的最大大小是多少?这个问题的回答,使用 cookie 似乎是不明智的。.

我建议使用 ASP 在 Web 服务器上创建一个文件并将数据写入该文件。当用户请求报告时,您可以确定是否已经过“足够的时间”以使其值得再次运行报告,或者缓存的版本是否足够。用户的登录详细信息可能用于命名文件或 Session.SessionID,或者您可以在用户的​​会话中存储一些新内容。使用他们的登录名的好处是您的报告缓存可以存在比用户会话更长的时间。

于 2012-05-31T18:30:29.580 回答
0

进一步了解Brian的回答,查询页数,这将被records returned / items per page四舍五入。然后在客户端加入每个页面查询的结果。页面从查询提供的偏移量开始。现在您在客户端上拥有全部金额,而不会溢出缓冲区。它可以根据界面和用户选项进行定制(每页显示 x 个)。

于 2012-06-13T21:52:14.717 回答