今天在重构哔谱哔谱 API 时,需要写到一个分页获取评论的函数。这样的功能在之前写 Typecho 博客的时候我就实现过,当时的策略是**自上而下**的,也就是说比如限制每页十个评论,那么每页获取十个根节点评论,再用非递归遍历算法深度优先遍历,得到十个根节点的所有子评论.

但是这次考虑到,如果某条评论的回复数量巨大,那么就会导致一次性获取的数据量也特别大,性能上是不行的。怎么办才好嗯?

这个时候还有两个解决思路,一种是像 Bilibili 那样,仍然是自上而下策略,只不过限制根评论的子评论数量,通过再写一个 API, 单独来获取子评论。这样的好处是很直观.

而还有一种思路,是像网易云音乐那样的自下而上的策略,直接对子评论分页,然后用子评论获取一个父评论。这样的算法简单许多。只是没有 哔哩哔哩的 那么直观.

而最垃圾的思路,就是知乎的策略,其效果就是:当消息提醒你有一条回复,你点进去却怎么也看不到你的回复.(大雾)