目前来看,已经实现屏蔽用户、主题、甚至是评论。
这个功能看起来简单,实际上大大增加了查询复杂度,直接硬写 SQL 应该不是最佳实践。
所以想请教一下大家,有没有什么比较好的设计思路?
PS:这个问题应该是一类问题,好多系统在设计的时候都有可见性的需求,虽然形式不同,但都是这类交集差集的问题。
1
huiyifyj 2018-05-22 11:35:24 +08:00 via Android 1
v2 以前版本有开源的,就是不知道那个版本有没有 block 功能。
|
2
kera0a 2018-05-22 11:48:09 +08:00 1
做了个简单的验证,
全部 tab 下首页是 48 条数据,block 一位后,刷新首页变成了 47 条 所以查询应该是不带 block 条件的 接下来只是 48 条数据中,排除 block 掉的数据,这一步可以知道是很快的。 然后应该还有一些措施,防止 Block 数据过多时的额外处理 |
3
iyangyuan OP @kera0a Block 数据过多,最容易想到的方法就是用后边的数据补充,但是这样做带来的后果是打乱了分页,必须为每个用户单独维护分页偏移量,否则下一页会看到重复的数据,真是纠结呀~
|
4
kera0a 2018-05-22 12:00:06 +08:00
|
6
mywaiting 2018-05-22 12:07:43 +08:00 3
你仔细看看页面的 JS 不就知道了么?
<script type="text/javascript"> blocked = []; ignored_topics = []; $("#TopicsHot").children('.cell').each( function(index) { for (i in blocked) { if ($(this).hasClass('from_' + blocked[i])) { $(this).css('display', 'none'); } } for (i in ignored_topics) { css_class = 'hot_t_' + ignored_topics[i]; if ($(this).hasClass(css_class)) { $(this).css('display', 'none'); } } }); </script> 不用想得这么复杂,其实用户根本不关心你分页,眼不见心不烦,帮 TA 隐藏掉就可以了~ 顺便说,v2 这里没有啥黑魔法,代码走的基本都是最简单的套路,够用省事,当然了,也够粗暴 |
7
flowfire 2018-05-23 10:35:39 +08:00 via iPhone
不太懂。。。没有缓存的情况下难道不是直接 NOT 就行了么
|