Asp.net mvc 如何存储用户偏好?饼干变大了

Asp.net mvc 如何存储用户偏好?饼干变大了,asp.net-mvc,cookies,preferences,Asp.net Mvc,Cookies,Preferences,我的应用程序(Asp.Net MVC)与用户界面(jQuery/js)具有良好的交互作用。例如,设置各种搜索图表,移动屏幕上的小工具等等。。我当然想保留每个用户的所有数据。因此,数据将可从Dumaine中的任何页面获得,用户将接受其偏好 现在,我将所有数据保存在一个cookie中,因为每次用户更改某些内容并频繁发生时,似乎都无法对服务器进行逻辑异步访问。当用户从应用程序注销时,我将cookie保存到数据库中 问题是如何将设置保存回数据库-从客户端保存到服务器。 因为我想记录很多互动。 示例sca

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

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

问题是如何将设置保存回数据库-从客户端保存到服务器。 因为我想记录很多互动。 示例scanrios:关闭小部件、移动小部件、调整菜单大小、排序列。。 我想记录下这些动作。如果我要为每一个动作解雇阿贾克斯 ןt太麻烦了。也许我别无选择。。 也许我应该运行一个异步程序来保存所有特定的间隔秒

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

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


还有其他解决方案吗?

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

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

在不知道代码的情况下,您是否考虑将用户首选项存储在数据库中。用户首选项表可能包含用于各种设置的列

如果有“保存首选项”选项,可以通过AJAX/JSON进行更新,也可以在回发时进行更新

编辑1:经过思考,我认为有一个明确的“保存首选项”按钮将是有益和实用的

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

一旦存在,以某种方式将其存储在数据库中(具体方式取决于您),然后返回一个带有success属性的JSON数组,以指示首选项存储是否成功


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

在不知道代码的情况下,是否考虑将用户首选项存储在数据库中。用户首选项表可能包含用于各种设置的列

如果有“保存首选项”选项,可以通过AJAX/JSON进行更新,也可以在回发时进行更新

编辑1:经过思考,我认为有一个明确的“保存首选项”按钮将是有益和实用的

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

一旦存在,以某种方式将其存储在数据库中(具体方式取决于您),然后返回一个带有success属性的JSON数组,以指示首选项存储是否成功


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

据我所知,每次更改设置时,您都在使用Javascript构建cookie?@Alastair,我想删除cookie(大cookie-性能问题).我认为应该在客户端使用json obj,在服务器上使用blob存储。唯一的问题是ajax调用的频率。我想我会用不同的方法来解决它。当用户更改某个内容时,我将发出一个脏标志。然后,我将每隔一段时间检查脏标志,并在脏标志出现时调用ajax调用。通过这种方式,用户可以做不同的定制工作。ajax调用仅从计时器开始。你觉得怎么样?@ari:我个人认为你应该让用户自己保存偏好。这意味着他们可以进行更改,而不必担心在不合适的时间激活定时保存(中间更改、有趣的值等)。这也将使您更容易调试和管理调用频率。据我所知,每次更改设置时,您都在使用Javascript构建cookie?@Alastair,我想摆脱cookie(大cookie-性能问题)。我认为方法是在客户端使用json obj,在服务器上存储blob。唯一的问题是ajax调用的频率。我想我会用不同的方法来解决它。当用户更改某个内容时,我将发出一个脏标志。然后,我将每隔一段时间检查脏标志,并在脏标志出现时调用ajax调用。通过这种方式,用户可以做不同的定制工作。ajax调用仅从计时器开始。你觉得怎么样?@ari:我个人认为你应该让用户自己保存偏好。这意味着他们可以进行更改,而不必担心在不合适的时间激活定时保存(中间更改、有趣的值等)。这也将使您更容易调试和管理