2010-07-29 64 views
2

希望你度过一个美好的一天。在.NET页面中进行分页的最佳方法

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

现在相关项目的数量可能会变大说500相册与用户正在查看的相册相关。我只显示前20个,并放下一个链接,说'查看全部'

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

方法1:使用一个中继器\电网控制 当用户点击一个网页,我得到了正确的项目(使用SQL),并将结果绑定到网格 的页面刷新和用户看到新的一页。所以一个大的请求和用户会看到所有的大拇指。

选项2: 当用户点击我使用Ajax获得缩略图文件名,标题,评分,作者等 后来我手动构建网格和使用JavaScript 设置元素的src属性然后我追加寻呼机由此产生的网格为div。用户看到没有页面刷新的新网格。

我的顾虑: 我在文件系统(不是数据库) 在第二种方法的JavaScript将派出50个单独的请求的Web服务器,以获得的影像文件的缩略图和所有图像文件。这将导致Web服务器上的很多请求。大型并发用户将使用映像文件请求来泛滥服务器。

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

由于该应用程序应该处理数百万张照片,我的应用程序会因将图像放入文件系统而死亡吗?

回答

2

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

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

你可以尝试一些CSS精灵技术。

+0

无法关注。请描述CDN – kheya 2010-07-29 22:44:04

+0

@Projapati为您排除了首字母缩略词 – 2010-07-29 23:04:13

+0

@Projapati - CDN基本上是一个用于提供内容的地理位置网络服务器。它们通常用于分离Web应用程序服务器和静态内容服务器之间的负载。它们通常也位于地理位置,因此内容将从离最终用户最近的服务器提供,以提高页面的整体性能和加载时间。 – 2010-07-30 03:05:47

2

Definetely你不应该使用选项1,因为它会占用大量的时间,网页载入

Aldso第二个选择ID不是那么好无论是。

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

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

然后你就可以在个人页面PageIndexChanging事件处理程序绑定你的GridView 所以只有那些需要的是实际加载的页面。

+1

这和提到的选项1没有区别。 我在sql存储过程中分页。 问题不在于sql分页,它是获取所有缩略图。 绑定到网格控件并在加载过程中获取所有图像大拇指还是使用javascript发送单独的img请求更好? – kheya 2010-07-29 22:41:49

+0

然后第一个选项可以确定。但是你必须小心页面的总体大小:由于50张图片很多,它们的尺寸应该很小(我的意思是KB),所以所有的图片都不需要太多的加载。 – 2010-07-29 22:55:25

+0

大拇指每个2-5 kbs – kheya 2010-07-29 23:06:54

相关问题