仪表板时间表

时间:2013-03-21 07:46:52

标签: ajax cakephp pagination timeline dashboard

我正在尝试在cakephp中实现类似于facebook的仪表板(获取帖子并将其发布到时间轴,当您按see more时,它会继续检索以前偏移的帖子),但我仍然对逻辑和我应该在我的实现中使用cakephp分页类。

$this->paginate();

它应该通过ajax来调用某些性能明智的

任何帮助或建议从哪里开始?

全部谢谢

1 个答案:

答案 0 :(得分:2)

不要使用paginate

如果您将要添加数据的内容分页 - 您将要求数据重叠,以便您要求第2页 - 并且就当前用户而言,结束前一页。< / p>

使用时间戳

无休止的数据流的常规技术是使用如下查询:

SELECT *
FROM foos 
WHERE created >= $previousLastTimestamp 
ORDER BY created DESC 
LIMIT 20

请注意,虽然我在此示例中使用created,但它可以是伪唯一的任何字段。

首次渲染页面时,将最后一个条目的时间戳存储在javascript变量中,然后您的“获取更多帖子”逻辑应为:

  • 发出ajax(get)请求,传递最后一个时间戳
  • 执行上述sql查询(作为$this->Foo->find调用)
  • 在您的js中更新最后一个时间戳,以便您在下次用户点击“获取更多帖子”时知道您的位置

使用>=条件的原因是,除非您要测试的字段具有唯一值,否则可能存在多个具有您正在测试的值的行。如果你有一个自然唯一的字段,你正在排序(id),那么你不需要使用大于或等于,你可以简单地使用大于,并避免需要考虑重复的行。

这里是a reference,它更详细地解释了为什么你应该处理这样的系统,避免传统的分页。