Back in my J2EE days I knocked out a paginator server-side component that constructed a guaranteed ordering of items. This paginator stored its paging state in memcached with a consistent hash for a key in order to share paging indices among similar requests. Staleness was handled with a periodic check for additional result, or cache expiration after a while. The client had to handle the stale check and the "oops, sorry, let me refresh the paged list..." after idle. This was only suitable for roughly half the use cases.<p>It was complex, but it worked. Thank goodness I didn't have to deal with infinite scrolls back then.