2010-05-11 80 views
2

服务器端分页是分页脚本计算数据库中的条目数然后建立链接吗? 我只知道服务器端是更快,更好,如果有很多的数据和客户端使用JavaScript?服务器端和客户端分页究竟是什么?

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

另外,现在我打算使用this pagination这就像digg风格。有人可以告诉我,如果这是服务器端分页? (对不起,如果我的术语关闭)

+0

对于小数据集,客户端分页更具响应能力 - 初始下载不会太大,javascript可以对数据集进行排序,而无需太多cpu时间,并且每次排序都不会往返服务器。对于大型数据集,服务器端分页效果更好 - 大型数据集一次下载需要很长时间,并且在javascript中排序不好。 – 2010-05-11 02:54:10

回答

5

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

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

服务器会做这样的事情:

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

如果最后一个/ 10记录有与555555555的SSN“方丈”的最后一个名称,然后在下一个页面可以通过使这些客户端检索值回服务器,然后会做一些如:

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

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

+0

所以你说是否显示1 2 3 [4] 5 ... 59 60是客户端?因为它显示所有页面而不仅仅是一页 – ggfan 2010-05-11 02:47:17

+0

不,服务器可以告诉客户端有多少页面,因此客户端知道要显示多少个数字。 – 2010-05-11 02:49:42

5

服务器端分页:

服务器从任何搜索要求得到公正的相关记录用户(当前页#,排序等),并执行需要大量的参数。这些发送到客户端,以及指向更多页面的链接等。

每次用户单击某个链接时,都会显示一个页面刷新以显示新数据。

使用时间:

  • 有许多成果或每项结果的有效载荷是相当大的
  • 查找/处理结果是非常耗时
  • 用户很少去过去的第一页

没有那么大,因为:

  • 每点击是往返于服务器,它可能需要一些时间
  • 维护状态皮塔

客户端分页:

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

时很有用:

  • 这里没有很多的结果(仅页面屈指可数)
  • 用户将使用多页(因此发送额外的数据是不是一种浪费)
  • 分裂一个表单:因为每个输入页面只是被隐藏并且没有被删除,所以整个表单可以以一种格式发送。

没有那么大,因为:

  • 初始页面加载大得多
  • 操作可能会导致用户的问题,而JS(虽然优雅降级是完全可能的)
  • 您可能需要将你的显示逻辑复制到Javascript中。

的混合方法

编写应用程序充分利用服务器端分页。一旦这是工作,使用JavaScript来拦截所有改变页面或排序的链接,并通过AJAX发送这些请求。适应你的服务器端脚本,只返回任何给定页面所需的HTML,并且当它响应AJAX请求时,页面中没有任何页面会变形。

优点:

  • 每个翻页最小有效载荷=更快的响应时间。
  • 完全可扩展。
  • 完美降解。