因此,当用户访问我的页面时,我希望从他们与页面的交互方式中存储某些数据。不过,这些数据都没有持久化,所以我正在尝试找出最好的方法。
例如,他们登录到我的页面,我通过javascript/google地图获取他们的位置。我应该把它存储在会话中吗?我也通过javascript得到了他们的IP地址。我应该只在每次需要使用javascript时进行查询,还是也应该将其存储在会话中?
缓存是否比将数据存储在会话中更好?我是否应该将所有这些放在model
中,将model
放在缓存中,然后使用Guid
在缓存中为正确的用户检索正确的model
?如果页面上同时有数千个用户,这会变得非常昂贵吗?
用户还可以使用这些信息从数据库中获取记录列表,这些信息是我作为参数收集到存储的proc中的。这个列表有时需要重新查询,但在其他时候,只需要在页面上重新排序。我不想在每次排序时都查询所有这些记录,但是缓存能为每个登录的用户保存几千条记录吗?
我只是从来没有在MVC中遇到过这个东西,所以我可以使用一些指导。
谢谢你们。
发布于 2011-05-06 23:42:16
如果希望在用户访问过程中持久化某些用户数据,可以使用ASP.NET会话、cookies或其他更持久的介质,如数据库。我通常将用户数据存储为对象,这些对象被序列化为json,加密并写到cookie中。这允许我在多次访问中持久化数据,即使他们离开又回来。
至于缓存数据,有很多选择,ASP.NET有一些很好的内置功能,可以让你更容易。当您缓存数据时,它将存储在您的web服务器的内存中,除非您设置了外部缓存服务器,如memcached。如果缓存的数据是公共数据,则可以在多个用户之间共享,消除了缓存的浪费。您还可以设置缓存失效,以便在数据变旧时自动清除缓存。
至于要缓存的数据量,这将取决于您缓存的内容、这些对象在内存中的大小、将创建这些缓存对象的用户数量以及您的服务器有多少可用内存。
理想情况下,你会想要计算出来,以确定成本是多少。
https://stackoverflow.com/questions/5913664
复制相似问题