2014-11-25 59 views
0

我知道这个问题已经回答了很多次。 事实上,如果你参考http://www.percona.com/files/presentations/ppc2009/PPC2009_mysql_pagination.pdf 你会得到答案。MySQL中高效而有效的分页

但是,我对这种常见方法有疑问,如下所示。

如果你是指滑动18,考虑事件的顺序如下:

  1. 客户端获取“第一页”
  2. 与ID = 19存在于“第三页”后,其thumb_up计数增加至98,从而将其推到“第一页”
  3. 客户端获取“第二页面”

然后,客户端将错过交ID = 19。我正在做一个移动应用程序,其中的项目缓存在客户端(想象一个无限的滚动列表)。如果缓存没有定期更新,那么这个帖子将会被错过一段时间!

确保客户端永远不会错过任何项目的任何智能方式,尤其是在客户端正在获取可能由其他用户同时更新的项目的情况下?

我想为表中的每个项目强加一个唯一的“更新时间戳”作为解决方案。但是,这需要某种形式的序列化来保持时间戳的唯一性,并且对于大量更新来说效果不佳。我们还需要确保时间戳是单调递增的,否则项目可能会错过。

+0

eBay有这个问题,如果你按“结束最快”排序 - 在你浏览即将结束的时间,并移动下一页时,可能已经创建了一个间隙。 – 2014-11-25 12:42:09

回答

-1

您可以使用浏览器或WebSQL的IndexedDB。使用索引数据库并将所有数据(可能是异步)转储到您已发送的任何请求。

+0

如果您愿意,我可以共享IndexedDB的示例。 – 2014-11-25 12:41:43

+0

这就是我在我的应用程序上做的事情,在SQLite数据库中将项目下载到无限列表中时缓存项目。 – Lucas 2014-11-25 12:47:38