站点中一些功能页面包含了新手引导,比如回帖页面,会出现回帖贴教学告知相应规则,新注册用户后首页也有相应的新手引导信息
这些提示信息都有“不再显示”的勾选框和确认按钮
那么在用户勾选并关闭了某提示信息后,应该如何能兼顾效率的做到让该信息永不显示?
我们所尝试的方案 1:Cookie
之前我们使用了 Cookie 的方案,关闭信息框后增加 "hide_回帖教学" 的 Cookie 保存 365 天,如果有 "hide_回帖教学" 的 Cookie 就不显示回帖教学
但这个方案在用户更换浏览器或者浏览设备后就失效了
我们所尝试的方案 2:数据库储存
我们设计了一个表:user,name(char 16),hide(boolean)
关闭信息框后增加记录 name:"回帖教学" hide:1
但这样的话所有用户每次打开回帖页面都需要 select * from `tips` where user=? && name=? && hide=1 做这个 SQL 判断,显然不够效率
我们所尝试的方案 3:数据库储存+缓冲
每次用户登录先 select * from `tips` where user=? 搜索出该用户全部的教学信息提示,并将结果缓冲
然后在回帖等需要显示提示信息的地方判断缓冲中是否存在已经“不再显示”了的
这个方案的问题是提示信息多的时候需要缓冲的内容相应增多,需要为每个用户额外开支更多缓冲内存
针对这个需求,有没有比方案 3 更好的方法?
这些提示信息都有“不再显示”的勾选框和确认按钮
那么在用户勾选并关闭了某提示信息后,应该如何能兼顾效率的做到让该信息永不显示?
我们所尝试的方案 1:Cookie
之前我们使用了 Cookie 的方案,关闭信息框后增加 "hide_回帖教学" 的 Cookie 保存 365 天,如果有 "hide_回帖教学" 的 Cookie 就不显示回帖教学
但这个方案在用户更换浏览器或者浏览设备后就失效了
我们所尝试的方案 2:数据库储存
我们设计了一个表:user,name(char 16),hide(boolean)
关闭信息框后增加记录 name:"回帖教学" hide:1
但这样的话所有用户每次打开回帖页面都需要 select * from `tips` where user=? && name=? && hide=1 做这个 SQL 判断,显然不够效率
我们所尝试的方案 3:数据库储存+缓冲
每次用户登录先 select * from `tips` where user=? 搜索出该用户全部的教学信息提示,并将结果缓冲
然后在回帖等需要显示提示信息的地方判断缓冲中是否存在已经“不再显示”了的
这个方案的问题是提示信息多的时候需要缓冲的内容相应增多,需要为每个用户额外开支更多缓冲内存
针对这个需求,有没有比方案 3 更好的方法?