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

时间:2009-01-02 20:01:02

标签: javascript pagination client-side server-side

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

我正在研究一个对ajax很重要并且动态提取数据的项目,所以我一直在研究一个使用dom的javascript分页系统 - 但我开始认为它会更好处理所有服务器端。

每个人的想法是什么?

9 个答案:

答案 0 :(得分:68)

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

服务器端分页最适合:

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

客户端分页最适合:

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

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

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

答案 1 :(得分:7)

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

这种类型的AJAX应用程序的最佳方法是让AJAX为下一页调用服务器,并使用客户端脚本添加更新当前页面。

答案 2 :(得分:6)

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

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

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

答案 3 :(得分:5)

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

对于较大的数据大小,答案是显而易见的。

答案 4 :(得分:3)

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

答案 5 :(得分:3)

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

一旦代码快乐地开始,我就会向客户端添加“智能”以获取“下一个”和“上一个”页面并将其保存在内存中。当用户访问下一页时,请更新缓存。

如果客户端软件执行此类页面缓存,请考虑数据的老化速度(可能会发生变化),以及是否应检查缓存的数据页面是否仍然有效。如果它超过2分钟,也许重新请求它。也许它有一个“脏”的旗帜。这样的事情。希望你觉得这很有帮助。 :)

答案 6 :(得分:3)

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

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

答案 7 :(得分:2)

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

G-曼

答案 8 :(得分:0)

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

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

在这种情况下,您可能必须查看使用此逻辑搜索和/或对客户端或服务器端进行排序是否会更好。

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