知乎回答有那么多,按照一定的算法排序,应该也不是实时刷新排序的,app上面不仅可以上下滑动,并且还可以左右切换,那么它是如何保证左右切换的时候是有序的? 并且不会重复显示的呢?

解决方案 »

  1.   

    这个问题十分有趣,我曾经用过一段时间的知乎app,虽然并没有注意到这个问题。
    我并不知道知乎的排序算法是什么样子的,但是我们不妨猜一下我认为这个算法至少分为两部分:
    第一部分是排序,我们浏览知乎的时候很容易注意到高赞评论和高回复回答经常出现在最前边,这说明知乎服务器有对回答进行排序,app获取回答的时候默认是按照顺序获得的。
    第二部分我认为应该是缓存,如果我们正在浏览一个回答的时候,突然不想看他了,向旁边一滑,就可以看另一个回答。这时候我们如果划回来,会直接出现刚才浏览到的地方,而不是上一个回答的头部,这说明知乎app是缓存了我们的浏览记录的。那么既然它把浏览位置缓存了,那肯定也能把我们浏览过哪些回答的特征码同时缓存。也就是说,当app向服务器请求到一个新的回答之后,它可以先让这个回答和缓存的所有特征码进行匹配,如果发现重复,则说明这不是一个新的回答,app可以再向服务器提交一次请求,或者告诉用户没有更多回答了。