将用户数据存储在MVC 2中

时间:2011-05-06 15:34:16

标签: .net sql-server asp.net-mvc-2 session caching

因此,当用户访问我的页面时,我想要存储某些数据,以及他们与页面交互的方式。这些数据都没有被保留,所以我试图找出最好的方法。

例如,他们登录我的页面,我通过javascript / google地图获取他们的位置。我应该将它存储在会话中吗?我也通过javascript获取他们的IP。我应该每次只需要使用javascript查询,还是应该将它存储在会话中?

缓存比在会话中存储更好吗?我应该将所有内容放在model中,将model放入缓存中,然后使用Guid为缓存中的正确用户重新提供正确的model吗?如果成千上万的用户同时出现在页面上,这会变得非常昂贵吗?

用户还可以使用我收集的信息从数据库中获取记录列表作为存储过程的参数。有时需要重新查询此列表,但有时需要在页面上重新排序。我不希望每次只是对它进行排序时查询所有这些,但是对于每个登录的用户,缓存是否能够容纳数千条记录?

我之前从未在MVC中遇到过这些内容,因此我可以使用一些指导。

谢谢你们。

1 个答案:

答案 0 :(得分:2)

如果要在用户访问过程中保留一些用户数据,可以使用ASP.NET会话,cookie或其他一些更永久的持久性介质(如数据库)。我通常将用户数据存储为序列化为json,加密并写入cookie的对象。这使我可以在多次访问中保留数据,即使他们离开并返回。

就缓存数据而言,有很多选择,ASP.NET有一些很好的内置功能,可以让您更轻松。当您缓存数据时,它将存储在Web服务器的内存中,除非您设置了外部缓存服务器,例如memcached。如果缓存数据是公共数据,则可以在多个用户之间共享缓存数据,以消除浪费的缓存。您还可以设置缓存失效,以便在数据变旧时自动清除缓存。

就缓存数据而言,这将取决于您正在缓存的内容,这些对象在内存中的大小,创建这些缓存对象的用户数以及服务器可用的内存量。 / p>

理想情况下,您需要计算出来以确定成本是多少。