在.NET页面中进行分页的最佳方法

时间:2010-07-29 22:22:06

标签: asp.net paging

希望你过得愉快。

我有一个页面,我让用户浏览其他用户发布的相关项目(相册)。 我会显示每张专辑的专辑缩略图,标题,作者,评分视图和类别。

现在相关项目的数量可以很大,据说500张相册与用户正在查看的相册相关。我只是先显示20并删除一个链接,说“查看全部”

用户点击查看全部后,我将他带到一个页面,每页显示50个项目。

选项1:使用转发器\网格控件 当用户单击页面时,我得到正确的项目(使用sql)并将结果绑定到网格 页面刷新,用户看到新页面。所以一个大的请求和用户看到所有的拇指。

选项2: 当用户点击寻呼机时,我使用Ajax来获取缩略图文件名,标题,评级,作者等。 然后我手动构建网格并使用javascript设置元素的src属性 然后我将结果网格附加到div。用户在没有页面刷新的情况下看到新网格。

我的担忧: 我有缩略图和文件系统中的所有图像文件(不是数据库) 在第二种方法中,javascript将向Web服务器发送50个单独的请求以获取图像文件。这将在Web服务器上引起大量请求。大型并发用户将使用图像文件请求充斥服务器。

什么是最好的&有效的方式来分页和存储用户文件?

我的应用程序是否会因为应用程序处理数百万张照片而将图像放入文件系统而死亡?

2 个答案:

答案 0 :(得分:2)

定义您不应该使用选项1,因为加载页面需要花费大量时间

Aldso第二个替代身份也不太好。

您可以使用GridView / ListView控件,但使用服务器端分页来获取数据。这样,您只能加载每页所需的信息。

您可以在此处查看如何为服务器端分页实现存储过程:http://www.sqlteam.com/article/server-side-paging-using-sql-server-2005

然后,您可以将单个页面绑定到Gridview的PageIndexChanging事件处理程序 因此,实际只加载了所需的页面。

答案 1 :(得分:2)

如果您还没有使用CDN(内容传送网络,如Amazon S3等)将有所帮助(因此您可以同时从多个位置下载)。

此外,不是请求一个图像,而是从服务器请求页面。让服务器决定要返回多少图像。

你可以尝试一些css sprite技术。