1

我的应用程序(Asp.Net MVC)与用户界面(jQuery/js)有很好的交互。例如,设置各种搜索图表、在屏幕上移动小工具等等。我当然希望保留每个用户的所有数据。因此,可以从 Dumaine 中的任何页面获得这些数据,并且用户将接受他的偏好。

现在我将所有数据保存在一个 cookie 中,因为每次用户更改某些内容并且发生很多事情时,它似乎没有对服务器进行逻辑异步访问。当用户从应用程序注销时,我将 cookie 保存到数据库中。

Q 是如何将设置保存回数据库 - 从客户端到服务器。因为我想记录很多互动。例如scanrios:关闭小部件,移动小部件,调整菜单大小,排序列..我想记录这些动作。如果我会为每个动作触发 ajax 保存规则,那就太麻烦了。也许我别无选择..也许我应该运行一个异步保存所有特定间隔秒。

问题是 cookie 变得非常大。想到每个服务器请求都附加了这个巨大的cookie,我觉得我的态度是错误的。

另一个问题 cookie 有大小限制。它因您的浏览器而异,但我肯定已经接近边界 - 我的 cookie 很容易变成 4kb

还有其他解决方案吗?

4

2 回答 2

3

在不知道您的代码的情况下,您是否考虑过将用户偏好存储在/您的数据库中。可以使用包含用于各种设置的列的 UserPreference 表。

如果您有“保存首选项”选项,您可以通过 AJAX/JSON 更新它,或者只是在回发时更新它。

编辑1:经过考虑,我认为有一个明确的“保存偏好”按钮将是有益和实用的。

在页面的某个地方,用户编辑生成 cookie 的内容,放置一个名为保存的按钮,然后连接一个 jQuery 点击处理程序。单击时,构建一个 CSV 字符串或另一种方法来存储回发到服务器的首选项,然后使用$.post将其发送回控制器中的操作方法。

在那里,以某种方式将其存储在数据库中(具体由您决定),然后返回一个带有成功属性的 JSON 数组,以表示首选项存储是否成功。

加载页面时,从数据库中获取首选项并执行您的操作。

于 2010-05-04T06:23:39.413 回答
1

另一种解决方案是将用户偏好存储到会话中并编写一些服务器端逻辑(如操作过滤器),将这些偏好写入每个页面上的 JSON 编码字符串(在script标记末尾的标签中),使它们可用于客户端脚本。

于 2010-05-04T06:17:53.017 回答