服务器和客户端分页究竟是什么?

时间:2010-05-11 02:44:07

标签: php pagination

服务器端分页是分页脚本计算数据库中的条目数然后创建链接的吗? 我所知道的是,如果有大量数据且客户端使用javascript,服务器端会更快更好吗?

分页脚本服务器或客户端是什么?

此外,我现在正计划使用类似于digg风格的this pagination。有人能告诉我这是服务器端分页吗?  (对不起,如果我的术语已经关闭)

2 个答案:

答案 0 :(得分:8)

服务器端分页:

服务器从用户那里获取许多参数(当前页面#,订购等),并执行获取相关记录所需的任何搜索。它们被发送到客户端,以及指向更多页面的链接等。

每次用户点击链接时,您都会看到显示新数据的页面刷新。

有用的时候:

  • 有很多结果或每个结果的有效负载非常大
  • 查找/处理结果非常耗时
  • 用户很少浏览第一页

不太好,因为:

  • 每次点击都是到服务器的往返,这可能需要一些时间
  • 维持状态是PITA

客户端分页:

服务器将所有可用记录发送到客户端,并使用Javascript将这些结果拆分为页面并呈现给客户端。更改页面或项目排序与即时一样好,并且不需要服务器交互。这使得在服务器端缓存结果变得更加容易。

有用的时候:

  • 结果不多(只有少数几页)
  • 用户将使用多个页面(因此发送额外数据并不浪费)
  • 拆分表单:因为每页输入只是隐藏而不是删除,所以整个表单可以以一种形式发送。

不太好,因为:

  • 初始页面加载量要大得多
  • 可能会导致没有JS的用户出现问题(虽然很可能会出现优雅降级)
  • 您可能需要将显示逻辑复制到Javascript中。

混合方法

编写应用程序以完全使用服务器端分页。一旦工作,使用javascript拦截更改页面或排序的所有链接,并通过AJAX发送这些请求。调整服务器端脚本以仅返回任何给定页面所需的HTML,并且在响应AJAX请求时不会覆盖它周围的页面。

好处:

  • 每次翻页的最小有效负载=更快的响应时间。
  • 完全可扩展。
  • 完美地退化。

答案 1 :(得分:5)

客户端是指您向下拉所有数据然后客户端将数据分段为页面。

服务器端通常由客户端完成,该客户端提供传递给服务器的密钥,然后服务器仅选择该数据的“页面”。例如,如果您按姓氏显示人员,则可以通过告知服务器您希望姓氏为“A”且您希望返回10行的人来创建第一页。

服务器会执行以下操作:

SELECT ssn, fname, lname 
FROM people 
WHERE lname like 'a%' and rownum <= 10 ORDER BY lname, ssn;

如果最后一条/第10条记录的姓氏为“abbot”且SSN为555555555,则客户端可以检索下一页,将这些值传递回服务器,然后执行以下操作:

SELECT ssn, fname, lname 
FROM people 
WHERE lname >= 'abbot' and ssn > 555555555 and rownum <= 10 ORDER BY lname, ssn;

对于大型数据集,服务器端被认为更好,因为传输到客户端的数据量远小于所有数据被客户端下拉和“分页”的情况。它还降低了客户端所需的内存,并利用数据库的强大功能对数据进行排序或使用现有的排序索引来加速选择。