有关 V2EX 的“忽略主题”功能的数据库设计

2021-06-17 23:05:49 +08:00
 LeeReamond

@Livid

用了挺长时间 v2 了一直没用过这个功能,今天点了一下感觉挺好奇怎么实现的。功能上来说应该是按过忽略以后就不会再出现在指定用户的浏览界面里,那是否意味着后端要永久储存每个用户忽略了哪些数据?假设 V2EX 有一百万个主题,是不是理论上每个用户都有存下百万级别的忽略列表的可能,而渲染的时候还要取出来筛选,这不会造成明显压力吗?想问一下是怎么实现的

1250 次点击
所在节点    问与答
12 条回复
crab
2021-06-17 23:24:16 +08:00
全渲染在 js 筛选
blocked = []
ignored_topics = []
LeeReamond
2021-06-17 23:33:36 +08:00
@crab 好方案,但是我翻了翻 F12 的 cookies 和 localstorage 没找到类似的键值,这是存哪里的?
SingeeKing
2021-06-17 23:48:53 +08:00
@LeeReamond 看页面源码
dingwen07
2021-06-17 23:49:11 +08:00
@crab #1 根据请求 V2EX 页面,忽略主题不是本地 JS 做的
LeeReamond
2021-06-18 00:01:01 +08:00
@SingeeKing 看了,没有
3dwelcome
2021-06-18 00:25:35 +08:00
"那是否意味着后端要永久储存每个用户忽略了哪些数据?假设 V2EX 有一百万个主题,是不是理论上每个用户都有存下百万级别的忽略列表的可能"

这就和 google 搜索引擎原理一样,理论上一个关键词能搜出几百万条记录。实际上对用户可见的,也只有那些”热数据“,多翻几页后面就空了。

假设每个用户都存百万级别的忽略列表,这明显是伪需求。就算存也是一部分冷数据,对于终端每个用户,热数据里最多给筛选几百条的存储空间。

给全站用户一起建立个几万条热数据过滤池,估计也足够了。
Jooooooooo
2021-06-18 00:34:37 +08:00
首先你不能忽略几百万个主题

就像微博你不能关注几百万个人 (要不然时间流咋捞?

微信不能添加几百万个好友 (要不然朋友圈咋弄
LeeReamond
2021-06-18 00:55:51 +08:00
@Jooooooooo 限制数量是一个简单粗暴的方案,我只是想知道 v2 怎么实现的,毕竟这种规模的业务也不算小了,挺有参考意义的
Elethom
2021-06-18 01:26:01 +08:00
这个的确是前端做的,看仔细一点。
xiaojj
2021-06-18 10:00:02 +08:00
前端实现的话,分页就不合理了
414
2021-06-18 10:58:21 +08:00
这个帖子应该会被很多人点忽略主题😅
LeeReamond
2021-06-18 20:29:33 +08:00
@Elethom 还有一个问题,前端储存的话是不是表示放弃了多端同步的需求

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/784078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX