很多内容更新比较快的网站,在翻页的时候由于已经有了新的内容或者排序发生了变化会导致内容重复,比如我现在看的第一页有个id是10000的帖子,在翻页后还能看到这个id为10000的帖子。我在观察糗事百科的时候发现他们网站没有这个问题。糗事百科的翻页链接里面会有一个s的参数,比如http://www.qiushibaike.com/8hr/page/2?s=4625315这个s的数值貌似是版本号。不过没能想通这个逻辑是怎么处理的。哪位大牛能分析下?
2 回答

富国沪深
TA贡献1790条经验 获得超9个赞
我的分析结果是这样的:假设糗事百科帖子中有个score字段来表示帖子的热度得分,得分越好,越应该排在前面。可以用redis的sortedset来保存排序,把帖子id和score存进去。这样翻页的时候就可以先计算出来第N页是哪些id,然后selctarticleswhereidin(a,b,c,d...).而且这个sortedset可以利用定时任务来创建新版本。访问首页的时候按照最近版本来查找。有s这个参数的时候,就去找s的值所对应的sortedset版本。每个sortedset有个自动过期时间,可以自动清除数据,防止redis中数据过多。如果传递的s版本过低,没有所对应的sortedset版本的时候就显示现在的最近版本。不知道这样是否可行
添加回答
举报
0/150
提交
取消