3

在我的应用程序中,我想在用户第一次访问屏幕时通过某种对话框提示用户一项新功能。并且在随后的访问中不会显示此对话框。

显而易见的解决方案是使用 cookie 或将其保存在数据库中。

但我担心: - 随着时间的推移,代码中的所有检查都会导致代码混乱 - 使用数据库解决方案 - 它会带来性能问题。

而且,如果用户清除了他的 cookie(例如),我不希望他们看到过去两年的每一个新功能更新(随着时间的推移,一个屏幕可以有多个新功能)。

有没有一种愚蠢/简单的方法来处理这个问题?推特和脸书在宣传他们的新功能时是如何做到这一点的?

我的环境是 MSSQL、ASP MVC,如果确实重要的话。

4

5 回答 5

2

两者都使用 - cookie 作为缓存技术 - 首先检查 cookie。如果它不包含标志 - 然后询问数据库。

此外,您可以在登录时初始化该 cookie。每个用户会话一次 DB 调用。

于 2012-06-01T17:54:46.187 回答
1

由于您有用户登录,我假设您也有某种类型的服务器端会话。您可以将用户首选项存储在数据库中,并在登录时将它们缓存在会话中,避免每次请求都访问数据库。只要您出于身份验证目的信任您的会话,您当然可以出于用户偏好而信任它。

于 2012-06-02T20:10:54.627 回答
1

就个人而言,我会针对用户记录使用数据库标志。

就像你说的,cookie 可能会被破坏并导致烦人的重复提醒。

如果你做得对,我认为你不需要担心“混乱的代码”。

于 2012-06-01T16:17:56.150 回答
0

我们将它存储在 XML 中。然后您可以使用序列化来快速保存/加载设置。我们将 XML 存储在 SQL 中(MS SQL 具有支持 XML 的功能)

于 2012-06-01T16:17:57.250 回答
0

那么代码中的检查与您存储数据的位置无关,这是一个不同的问题。

至于你的问题,我想说的是使用数据库,出于速度+轻松的原因。

于 2012-06-01T16:18:49.053 回答