【问题标题】:What exactly is server and client side pagination?服务器和客户端分页到底是什么?
【发布时间】:2010-05-11 11:01:31
【问题描述】:

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

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

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

【问题讨论】:

  • 对于小数据集,客户端分页响应更快——初始下载不会太大,javascript可以对数据集进行排序,不需要太多cpu时间,也没有到服务器的往返对于每一种。对于大型数据集,服务器端分页更好——大型数据集一次下载需要很长时间,并且在 javascript 中无法很好地排序。

标签: php pagination


【解决方案1】:

服务器端分页:

服务器从用户那里获取一些参数(当前页面#、排序等)并执行任何搜索以获取相关记录。这些将连同指向更多页面的链接等一起发送给客户端。

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

在以下情况下有用:

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

不太好,因为:

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

客户端分页:

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

在以下情况下有用:

  • 结果不多(只有几页)
  • 用户将使用许多页面(因此发送额外的数据不会浪费)
  • 拆分表单:因为输入的每一页只是被隐藏而不是删除,整个表单可以在一个表单提交中发送。

不太好,因为:

  • 初始页面加载要大得多
  • 可能会给未开启 JS 的用户带来问题(尽管很可能会优雅降级)
  • 您可能需要将显示逻辑复制到 Javascript 中。

混合方法

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

好处:

  • 每次翻页的负载最少 = 更快的响应时间。
  • 完全可扩展。
  • 完美降级。

【讨论】:

    【解决方案2】:

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

    服务器端通常由客户端完成,提供传递给服务器的密钥,然后服务器只选择该“页面”数据。例如,如果您按姓氏显示人员,则可以通过告诉服务器您想要姓氏为“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;
    

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

    【讨论】:

    • 所以你是说如果它显示 1 2 3 [4] 5...59 60 那是客户端?因为它显示了所有页面,而不仅仅是一页
    • 不,服务器可以告诉客户端有多少页,因此客户端知道要显示多少个数字。
    猜你喜欢
    • 2010-09-29
    • 2011-06-16
    • 2011-06-20
    • 1970-01-01
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多