如果您的解決方案是ajax-y,您可以將遊標(作爲字符串)保存在客戶端的數組中,因此您不需要將其存儲在memcache中。
當數據被添加(或刪除/更改)時,舊遊標不會失效。你仍然可以使用它們。就你而言,它們基本上代表了頁面上的第一項。因此,唯一可能發生的情況是,如果您在結果的第3頁上,然後導航回去然後轉發,則可能看不到第3頁中完全相同的實體。
例如,如果您從第2頁第3頁:
- 第2頁(光標= X2)的結果:[d,E,F,...,G]
- 第3頁(光標= X3)的結果:[H,I,J ,...]
然後,如果'e'被刪除。向後走,第2頁(cursor = x2)現在將顯示[d,f,...,g,h],並且我們更新光標x3,因爲它改變了(我們在第2頁的每次fetch()後檢查它)。現在,第3頁現在將具有[i,j,...]
類似地,如果在'e'之後添加'e2',回到第2頁,我們將會有[d,e,e2, f,...]和x3被更新。接下來,第3頁將包含[g,h,i,j,...]
唯一的警告是第一頁永遠不要使用遊標(如果元素在第一個之前添加),以及您應該始終允許用戶「嘗試」進入下一頁,以防元素在最後結果之後被添加。
因此,頁碼不會非常具體,但是在處理分頁數據時,它們不可能是可以更新的。一個竅門是不使用頁碼,但將頁面標記爲「以元素x開頭的數據」或類似的東西。
我不知道任何實現,但它應該是相當海峽實施。遊標功能在文檔中描述得非常好:http://code.google.com/appengine/docs/java/datastore/queries.html#Query_Cursors