分页大数据集

问题描述 投票:0回答:2

我有一个项目,用户需要循环遍历大约。 100,000 张照片并为每张照片分配 PhotoType ID。

项目要求是屏幕上只显示一张照片,所以基本上意味着有 100,000 个页面包含 1 个项目。

启动这个项目的最佳方式是什么?显然使用 ViewState 或完全重新加载页面会浪费资源?

我正在考虑尝试将数据序列化为客户端脚本变量,然后使用页面方法来使用它。我正在使用 c# asp.net。

如果您有任何想法或更好的方法,请告诉我。

c# asp.net pagination data-paging
2个回答
0
投票

对于如此大量的数据,您需要改变策略。首先,您不能只将 100k 条记录加载到 DataSet 中。您需要在服务器端进行分页(并仅从存储过程中返回所需的单个记录)。如果每页只显示一张图片,您甚至不需要数据集。就 ViewState 而言 - 我会完全禁用它。您可以将当前页面存储在隐藏字段中并使用处理程序来显示照片。另外,使用 AJAX 获取下一张/上一张照片..尝试使其尽可能轻量。


0
投票

下一个和上一个按钮将是带有一些很酷的 CSS 类的简单 HTML 元素。事件处理程序(当用户单击下一个/上一个按钮时)将使用 JavaScript。当前索引(活动照片 ID)可以位于隐藏字段中,您将在每次单击事件后更新该索引(单击下一个时,则 idx += 1 且上一次单击时 idx -= 1)。此后,您需要从数据库检索照片(仍在 javaScript 事件中)。我建议使用 WCF 或 ASMX Web 服务,它们会返回 http 处理程序的 URL(我假设您使用处理程序将 varbinary 图像字段显示到 html )。另外,在这些点击之前,您可以显示一些漂亮的 ajax 进度 gif 动画等...并且 Web 服务本身将调用存储过程,该存储过程将从数据库返回适当的图像(基于活动索引值,因此只需要 1 条记录)。所以最后 - 您只需要:存储过程、几行 Java 脚本代码、处理程序、Web 服务。无需 ASP 网格或数据集,也无需迭代 100k 条记录。这将是你表现的杀手。希望这有助于为您指明正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.