2009-01-02 102 views
37

什么是最好处理分页?服务器端或动态使用JavaScript?分页:服务器端还是客户端?

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

大家的想法是什么?

回答

58

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

服务器端分页是最好的:

  • 大的数据集
  • 更快的初始页面加载
  • 辅助功能对于那些没有JavaScript的运行

客户端分页是最好的用于:

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

所以,如果你对分页主要化妆品的原因,更有意义来处理它的客户端。如果你想缩短初始加载时间,服务器端是明显的选择。

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

7

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

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

+2

如果加载时间问题,它可能是一个好主意,预加载页面时加载下一页。除非有人以非常快的速度翻两页,否则将导致加载时间为零。 – ThiefMaster 2010-12-02 11:19:10

3

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

5

如果您有大页面和大量页面,您最好通过AJAX从服务器以块的形式请求页面。所以让服务器根据您的请求URL进行分页。

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

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

3

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

对于较大的数据大小,答案很明显。

2

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

一旦代码被快乐地隆隆,我想补充“聪明”的客户端,以获得“下一步”和“上”页面,并认为在内存中。当用户转到下一页时,更新缓存。

如果客户端软件做这种页面缓存的,不要考虑如何快速您的数据的年龄(可能会改变),如果你应该检查数据的缓存网页仍然有效。如果年龄超过2分钟,可能会重新申请。也许有一个“脏”的标志。类似的东西。希望你觉得这有帮助。 :)

2

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

G-人

3

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

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