我正在尝试在cakephp中实现类似于facebook的仪表板(获取帖子并将其发布到时间轴,当您按see more
时,它会继续检索以前偏移的帖子),但我仍然对逻辑和我应该在我的实现中使用cakephp分页类。
$this->paginate();
它应该通过ajax来调用某些性能明智的
任何帮助或建议从哪里开始?
全部谢谢
答案 0 :(得分:2)
如果您将要添加数据的内容分页 - 您将要求数据重叠,以便您要求第2页 - 并且就当前用户而言,结束前一页。< / p>
无休止的数据流的常规技术是使用如下查询:
SELECT *
FROM foos
WHERE created >= $previousLastTimestamp
ORDER BY created DESC
LIMIT 20
请注意,虽然我在此示例中使用created
,但它可以是伪唯一的任何字段。
首次渲染页面时,将最后一个条目的时间戳存储在javascript变量中,然后您的“获取更多帖子”逻辑应为:
$this->Foo->find
调用)使用>=
条件的原因是,除非您要测试的字段具有唯一值,否则可能存在多个具有您正在测试的值的行。如果你有一个自然唯一的字段,你正在排序(id),那么你不需要使用大于或等于,你可以简单地使用大于,并避免需要考虑重复的行。
这里是a reference,它更详细地解释了为什么你应该处理这样的系统,避免传统的分页。