2012-03-15 42 views
1

我使用物化游标来实现基本分页,基本上创建了more按钮。如何最好地使用物化来实现分页,以建立允许用户前进和后退的链接。更多的东西一样的页列表..使用物化实现良好的分页

1, 2, 3, 4, more

回答

0

您可以使用光标一页向前和向后建立呼叫,通过FetchOptions.startCursor(..)FetchOptions.endCursor(..)

要创建你将不得不使用更直接的分页链接FetchOptions.limit(..)FetchOptions.offset(..)

请注意,offset(..)可能会非常昂贵,因为它会获取给定页面之前出现的所有实体。因此,根据整个集合的用法和大小,通过预加载和缓存一组密钥可能会更好。或者更好的是,用搜索替换分页。

+1

他正在使用Objectify ... – 2012-03-15 21:07:43

+0

Objectify是一个围绕低级API的非常薄的层 - 它实际上使用低级API的光标:http://code.google.com/p/objectify-appengine/wiki/IntroductionToObjectify #游标 – 2012-03-15 21:43:24

+0

是的,但这不是你用来访问游标中的游标的语法,在网站上的分页我根本不会使用游标。我会将这些键加载到一个列表中,并将它们粘贴到一个会话或JavaScript中。 – 2012-03-16 01:05:29

2

最好的办法可能是获取整个结果集的密钥并将其存储在会话中或JavaScript中。每个next/previous都可以通过id加载列表中的下一个项目。按ID加载非常便宜。您可以将完整的查询结果缓存在memcache中,只要它不是太大,但这取决于您要提取什么类型的对象。