[Instagram] Feed API Pagination 设计是否需要last timestamp

罗辑老师,你在讲到Instagram Feed API 设计的时候,说要将last timestamp放到API request 里面,这个有些不是很明白。我可以讲start_index和end_index作为API的input吗?

我理解是当用户初次发送get feed请求的时候,feed service 会generate full list of feed 并且把这个list 存到cache里, 然后根据page load size 来分批发给用户。如果load next page 的时候,我们在根据新的start index 和end index来读取下一页的东西。这样的设计可以吗?

另外,用户在刷新的时候,我们需要是不是需要重新call feed service来拿到新的feed list, 这个时候需不需要考虑去重的问题,刷新之后的页面不显示之前显示过的东西,这样需要怎样来设计?

我们在课上比较过这两种方案,如果用 index 的话,有新 post 进来以后这个 index 就不再跟之前一样了,会造成重复发送 post 的问题,所以我们说不能靠 index 来说明上次传 post 传到哪里了。用 Timestamp 就清楚多了。
刷新之后显示的是包含最新照片的时间线,是可以出现跟之前显示重复的。我们的需求是这样定义的。

谢谢老师回复。但是client 在发送load second page的时候,服务器还会再去call feed service拿到新的feed list吗?我的理解是,如果只是load second page的时候不会重新call service, 而是直接用first load时候读到的feed list来populate second page。这个过程不会再call feed service,所以新的post在这个过程中不会进来

老师,我明白你的解释了。对于feed 这种设计,用timestamp的确更合理。我说的那种pagniation并不是常用的pagination, 是一种现在工作上见到的一种特别处理pagination的方式,而且场景也不是特别一样。

嗯是的。从之前算好的 cache 里直接拿的话,算是维持了固定的 index,但是每次 populate cache 的时候也不会无穷无尽地 populate,拿到后面需要重新算的时候还是会出问题。