分页:服务器端还是客户端?

Pagination: Server Side or Client Side?

提问人:jrutter 提问时间:1/3/2009 最后编辑:Andreas Grechjrutter 更新时间:3/3/2019 访问量:40016

问:

处理分页的最佳方法是什么?服务器端还是使用 javascript 动态执行?

我正在做一个项目,这个项目对 ajax 很重,并且动态地拉入数据,所以我一直在研究一个使用 dom 的 javascript 分页系统 - 但我开始认为最好在服务器端处理它。

大家怎么看?

JavaScript 分页客户端 服务器端

评论


答:

10赞 Mehrdad Afshari 1/3/2009 #1

在客户端执行此操作将使您的用户首先下载所有可能不需要的数据,并将消除分页的主要好处。

对于此类 AJAX 应用程序,最好的方法是让 AJAX 调用服务器以获取下一页,并使用客户端脚本添加更新当前页面。

评论

6赞 ThiefMaster 12/2/2010
如果加载时间很重要,最好在加载页面时预加载下一页。这将导致零加载时间,除非有人非常快地转发两页。
5赞 Otávio Décio 1/3/2009 #2

服务器端 - 向客户端发送当前视图的足够内容。

83赞 Cory House 1/3/2009 #3

正确的答案取决于您的优先级和要分页的数据集的大小。

服务器端分页最适合:

  • 大型数据集
  • 更快的初始页面加载
  • 未运行 javascript 的用户的辅助功能

客户端分页最适合:

  • 数据集小
  • 更快的后续页面加载

因此,如果您主要出于外观原因进行分页,那么在客户端处理它更有意义。如果您要分页以减少初始加载时间,服务器端是显而易见的选择。

当然,如果您使用 Ajax 加载后续页面,客户端在后续页面加载时间上的优势会减弱。

评论

4赞 Pushpendra 7/11/2018
什么是小尺寸数据现在是问题
0赞 Cory House 7/12/2018
@Pushpendra足够小,您几乎可以将其全部发送给用户,并期望他们的浏览器能够根据需要对数据进行过滤和排序。因此,测试您的目标平台很重要。
2赞 Aheho 2/27/2021
我想补充一点,如果期望用户会查看第一页,然后继续前进(就像在搜索结果的用例中一样),那么服务器端分页将减少资源密集度。
7赞 Diodeus - James MacFarlane 1/3/2009 #4

如果您有大页面和大量页面,则最好通过 AJAX 从服务器请求块中的页面。因此,让服务器根据您的请求 URL 进行分页。

您还可以预取用户可能会查看的接下来的几页,以使界面看起来更具响应性。

如果只有几页,那么预先抓取所有页面并在客户端上分页可能是更好的选择。

6赞 user50705 1/3/2009 #5

即使数据量较小,最好的选择也是服务器端分页。如果您的 Web 应用程序进一步扩展,您以后不必担心。

对于更大的数据量,答案是显而易见的。

4赞 Sam 1/3/2009 #6

在实际的限制世界中,我会在服务器端进行分页,以节省与发送数据相关的所有资源。此外,服务器需要保护自己免受恶意/故障客户端要求巨大页面的侵害。

一旦该代码愉快地进行,我就会向客户端添加“智能”以获得“下一个”和“上一个”页面并将其保存在内存中。当用户分页到下一页时,更新缓存。

如果客户端软件执行这种页面缓存,请考虑数据老化的速度(可能会更改),以及是否应检查缓存的数据页面是否仍然有效。如果它超过 2 分钟,可能会重新请求它。也许里面有一面“肮脏”的旗帜。类似的东西。希望这对你来说有用。:)

3赞 GeoffreyF67 1/3/2009 #7

我更喜欢服务器端分页。但是,在实现它时,您需要确保正确优化 SQL。例如,我相信在MySQL中,如果您使用LIMIT选项,则它不会使用索引,因此您需要重写sql才能正确使用索引。

G-曼

4赞 JW. 1/3/2009 #8

你的意思是你的 JavaScript 在内存中拥有所有数据,并且一次显示一页吗?或者它根据需要使用 AJAX 从服务器下载每个页面?

如果是后者,您可能还需要考虑排序。如果使用 JavaScript 进行排序,一次只能对一个页面进行排序,这没有多大意义。因此,您的排序应该在服务器上完成。

1赞 Sangeet Agarwal 3/3/2019 #9

这里要指出的另一件事是,您很少会局限于简单地对原始数据集进行分页。

您可能需要在显示的一列或多列中搜索某些术语,然后对几列进行排序,然后让用户能够分页浏览此筛选的数据集。

在这种情况下,您可能需要看看使用此逻辑搜索和/或排序客户端还是服务器端会更好。

另一件需要考虑的事情是,亚马逊的云搜索 API 为您提供了一些非常强大的搜索功能,显然,如果您碰巧将数据托管在那里,您将希望允许云搜索为您处理搜索和排序。