在我的应用程序中,我想在第一次访问屏幕时向用户提示某个新功能,并提供某种对话框。在随后的访问中,此对话框未显示。
显而易见的解决方案是使用cookie或将其保存在数据库中。
但我担心的是: - 随着时间的推移,代码中的所有检查都会导致代码混乱 - 使用数据库解决方案 - 它可能会带来性能问题。
如果用户清除了他的cookie(例如),我不希望他们看到过去两年的每个新功能更新(一个屏幕随着时间的推移可以有多个新功能)。
有没有一种愚蠢/简单的方法来处理这个问题? Twitter和facebook在推广新功能时如何做到这一点?
我的环境是MSSQL,ASP MVC如果重要的话。
答案 0 :(得分:2)
同时使用 - cookies作为缓存技术 - 首先检查cookie。如果它不包含标志 - 则询问DB。
此外,您可以在登录时初始化该cookie。每个用户会话一次数据库调用。
答案 1 :(得分:1)
就个人而言,我会对用户记录使用数据库标志。
就像你说的那样,cookie可以被销毁并导致恼人的重复提醒。
如果你做得对,我认为你不必担心“乱码”。
答案 2 :(得分:1)
由于您有用户登录,我假设您也有某种类型的服务器端会话。您可以将用户首选项存储在数据库中,并在登录时将它们缓存在会话中,从而避免每次请求都进入数据库。只要您信任您的会话以进行身份验证,您当然可以信任它以获取用户首选项。
答案 3 :(得分:0)
我们将其存储在XML中。然后,您可以使用序列化来快速保存/加载设置。我们将XML存储在SQL中(MS SQL具有支持XML的功能)
答案 4 :(得分:0)
代码中的检查独立于存储数据的位置,这是一个不同的问题。
根据你的问题我会说要使用数据库,为了速度和简易原因。