在会话存储用户信息?

如果您存储的信息大约需要为每个请求,例如用户。 角色,电子邮件,用户名等。

在会议上,或者是确定转到数据库的每个请求这一信息?

谢谢

--------------解决方案-------------

如果你不打算负载均衡,那么会话状态是完全可以接受的。 要小心,如果会话状态被配置为使用数据库持久不过,因为那时你不仅可以进入数据库,但招致的对象的序列化的开销。

如果它的用户特定数据,则在分布式哈希表缓存系统可能工作。 比如像Memcached的有利于这一点,因为他们是在内存中缓存(性能),但分布在多个服务器(负载平衡),所以你得到两全其美。

当然,如果它是一个定期更换,特别是如果你认为可能会修改数据库,而Web应用程序知道,然后回到数据库中的其他系统可能是唯一的选择数据。

我更喜欢使用一个加密的cookie这一点。 该数据库调用可以在大型,繁忙的系统变得昂贵。 会议是好的,但如果你的会话后端数据库供电,可以得到昂贵了。 很显然,使用Cookie的时候,你必须将身份验证令牌检查。

这取决于你所说的“应该”的意思。 我已经上使用的会话缓存用户信息的一些应用程序的工作。 该方法行之有效,减少数据库的数量轮需要为每个Web请求人次。

在另一方面,它引入的状态到您的Web服务器,所以你要么必须坚持一个web服务器,使用“sicky会议”(这可以使管理Web服务器更复杂一点)或启动存储会话信息的共享数据商店(这抹了任何性能增益,你可能会使用它摆在首位有)。

我保持会话的用户ID和我保持活跃用户记录在缓存对于很多应用,但是后来我又倾向于保持我的所有的缓存下拉列表中的内容,而我现在已经呈现用户的每一个下拉列表接着。

我有一些人惊呼“我的天你一直在高速缓存!?!?” 但实际上,它的伟大工程。 好,我有用户列表的缓存只有一个副本不是每个应用程序实例一个副本(100个并发用户是指在内存中的用户列表中的潜在100份)。 总的来说,我把任何东西缓存不经常改变,并迫使它缓存,如果它确实发生了改变,所以它会重新加载下次访问。

这取决于你的网站/应用程序。 一般的规则是这样的:

保存在会话效果很好,如果同时使用的用户数是相当低的数据是比较小的。

保存在Cookie效果很好,如果同时使用的用户数为高,数据的大小是比较低的。 显然,cookies是公开可见的,所以如果是敏感的,如电子邮件,那么它应该被加密。

保存在数据库中的工作良好,如果数据的大小是大的。

注意。 至于其他人,如果你使用的是Web场说,那么我会忘记节约了会议。

马丁·福勒的“模式企业应用架构”选项一个很好的说明,但我不知道他是否有东西在网上。

如果网站/应用程序要求身份验证,然后NET有良好的内置功能用于存储用户的角色和独特的用户名。 如果您保存此验证过程中,则这些值可以通过User.IsInRole()和User.Identity.Name进行访问。

是存储在会话你造成性能问题? 如果您的数据的尺寸相对较小,如电子邮件,然后我会去使用会话或饼干,避免数据库。 运行性能测试,看看你能达到最佳效果。

会话数据可以存储在数据库中为好,如果你的网站是Web园OG场运行的是有用的。 如果会话正在运行是InProc,用户数据将被保存在存储器中,这是许多原因较快,但在可扩展性的成本。

另一种常见的方法是将其保存为ViewState中,然后将其发送回和客户端和服务器与每一个回发,这当然会导致带宽命中之间第四,但扩展好得多的InProc会话。

我个人喜欢的会话状态更好,如果该网站是小我运行它是InProc,如果/当网站成长,我可以改变它使用一个数据库来代替。

分类:C# 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.562 (s). 10 q(s)