【问题标题】:How to load millions of records in asp.net mvc 3 or 4 to client side. (slow issue)如何将 asp.net mvc 3 或 4 中的数百万条记录加载到客户端。 (慢问题)
【发布时间】:2013-06-19 06:10:34
【问题描述】:

我有一个加载数百万条记录的项目。我将使用 asp.net mvc 3 或 4。我确信我的页面加载速度会非常慢,因为从服务器检索到大量数据。我一直在创建 SQL Server 代理作业以执行早期查询并将其保存在将在站点中使用的临时表中。我相信还有很多更好的方法。请帮忙。我听说过用于客户端数据库的 IndexedDB 或 WebSQL。任何帮助/建议将不胜感激。

我在 stackover 中的第一个帖子/问题!

谢谢,提前!

【问题讨论】:

  • 您可能不需要一次加载数百万条记录,对吗?
  • 改为使用分页并从分页的数据库中获取
  • Paul,这是可能的,因为用户可以选择日期范围。我认为“1 年”会有 700,000 多。
  • 您想要更快的服务器端还是客户端?
  • 客户端。因为用户会选择日期范围和一些字段。该页面应该不会花很长时间来获取数据,因为我必须使用 html5 进行绘制。

标签: c# asp.net-mvc indexeddb web-sql


【解决方案1】:

您可能想查看分页。如果搜索返回 700,000 多条记录,您可以将它们分成不同的页面(每页 100 条或其他内容),这样页面就不会永远加载。

查看类似问题here

【讨论】:

  • 我没有使用网格或分页。它只是一个普通的 List 对象,将在客户端转换为 json。用户将选择一个日期范围和一些要选择的字段。因此它会再次发回服务器以根据所选日期范围进行查询。我正在寻找一种比来回发布到服务器更好的方法。
【解决方案2】:

我一直在处理类似的问题,500K 数据存储在客户端 IndexedDB 中。我使用多个 Web Worker 将数据存储在客户端(仅在 chrome 中支持),我只将 id 和在数据上使用的操作发布到服务器端。

为了获得更快的速度,我发现使用 4-8 个网络工作者来实现最佳数据传输率,每次调用都检索和存储 1K - 2.5K 项,即大约 1MB 的数据。

你应该考虑的事情是:

  • 限制同步过程中允许的操作
  • 服务器与客户端数据的更新 - 我使用的方法 总是在服务器端更新数据并调用同步过程 将更改的数据同步回客户端
  • 你打算在内存中存储什么 - Google Chrome 限制为 1.6GB,所以要小心内存泄漏,我目前在同步期间使用不超过 300MB - 100-150MB 是正常工作期间的平均值

【讨论】:

    【解决方案3】:

    您需要按页面拆分数据。从数据库中检索特定范围。你真的需要一次数百万行吗?我认为首先应该有一个过滤器。

    【讨论】:

      【解决方案4】:

      分页绝对是要走的路。 然而,你想让网站响应,所以你应该做的是使用 Ajax 在后台运行以持续加载数据,同时让用户与网站进行交互与初始设置数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-31
        • 2014-03-25
        • 1970-01-01
        • 2016-04-12
        • 2016-03-06
        • 1970-01-01
        • 2012-04-19
        相关资源
        最近更新 更多