【问题标题】:Best way to do paging in a .NET page在 .NET 页面中进行分页的最佳方法
【发布时间】:2010-07-29 22:22:06
【问题描述】:

希望你今天过得愉快。

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

现在相关项目的数量可以很大,比如 500 个相册与用户正在查看的相册相关。我只显示前 20 个并删除一个链接,上面写着“查看全部”

一旦用户单击查看全部,我会将他带到一个页面,在该页面中每页显示 50 个项目。

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

选项 2: 当用户单击寻呼机时,我使用 Ajax 获取缩略图文件名、标题、评级、作者等。 然后我手动构建网格并使用 javascript 设置元素的 src 属性 然后我将生成的网格附加到一个 div 中。用户无需刷新页面即可看到新网格。

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

对用户文件进行分页和存储的最佳和有效方式是什么?

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

【问题讨论】:

    标签: asp.net paging


    【解决方案1】:

    如果您还没有使用 CDN(内容交付网络,如 Amazon S3 等),那么您可以同时从多个地方下载)。

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

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

    【讨论】:

    • 无法关注。请描述CDN
    • @Projapati 为你拼出了首字母缩写词
    • @Projapati - CDN 基本上是一个用于提供内容的地理定位网络服务器。它们通常用于在 Web 应用程序服务器和静态内容服务器之间分配负载。它们通常也位于地理位置,因此内容将从最接近最终用户的服务器提供,以提高页面的整体性能和加载时间。
    【解决方案2】:

    您绝对不应该使用选项 1,因为加载页面需要很长时间

    Aldso 第二种选择也不是很好。

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

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

    然后您可以将单个页面绑定到您的 Gridview 的 PageIndexChanging 事件处理程序 所以只有需要的页面才会被实际加载。

    【讨论】:

    • 这与提到的选项 1 没有区别。我在 sql 存储过程中有分页。问题不在于 sql 分页,而是获取所有缩略图。在加载期间绑定到网格控件并获取所有图像缩略图或使用 javascript 发送单独的 img 请求是否更好?
    • 那么第一个选项应该没问题。但是您必须注意页面的整体大小:因为 50 张图片很多,所以它们应该很小(我的意思是 KB),所以所有图片都不需要太多加载。
    • 我建议像他说的那样做。我尽可能在 SQL Server 上使用服务器端分页。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-24
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多