我开始考虑在客户网站上重写一些页面,我可以看到,例如,只要有人登录,就会设置 53个会话变量。
对我来说,只要您登录后立即设置所有内容就会很疯狂,然后在整个网站中都会引用这些会话或添加新会话。
他们的网站往往会收到错误,因为其中一个会话已失去其价值。
所以我的问题是重新做这些页面的最佳方法是什么。
我认为只需要一个会话,这就是USERNAME / USER-ID,其他所有内容都应该在需要时从数据库中获取。
提前致谢
答案 0 :(得分:3)
使用会话通常不是一个好主意,但这取决于那里存储的数据类型。如果它是一堆字符串和整数值,它可能不是太关心,但如果它们在会话中存储健壮的对象和/或大量数据,我肯定会考虑重构它。
根据经验,我尽量避免将会话用于除用户相关数据之外的任何其他内容。将会话用于除此之外的目的可能很诱人,但是你需要一个良好的设计和实现。
以下是关于存储物品的几个指导原则:
对于特定于用户且在整个应用程序中经常访问的数据,利用会话减少到数据库的访问
对于或多或少是静态且不依赖于用户或与用户相关的数据,利用缓存或应用程序状态来减少到数据库的访问
对于特定于页面的数据,请使用ViewState和/或隐藏字段。但是,请勿使用ViewState存储大型对象或数据集
对于用户可以安全查看的数据,请考虑使用QueryString将信息从一个页面传递到另一个页面
上述原则通常会指导您朝着正确的方向前进,但与任何事情都有例外。只要考虑一下你存储数据的位置以及存储数据的原因,你应该没问题。
答案 1 :(得分:0)
首先,我非常怀疑每个用户有多个会话,这意味着你指的是会话变量。
其次,这一切都取决于你的目标,但是,如果你有这么多变量,也许你应该使用DB来存储它们并在必要时进行检索。任何网站肯定会有53个会话变量。
答案 2 :(得分:0)
这取决于你的情况,但我会检查并证明为什么你需要53个会话变量中的每一个。虽然这并非闻所未闻,但您必须考虑会话存储将占用多少RAM,因为它会影响您的站点可以支持的并发用户数。
你可以像@walther建议的那样做,但我再次想要理由,因为将它们放入数据库将交换内存会话操作以进行(网络)数据库调用。也许某些值真的是全局的,而不是特定于会话?在这种情况下,您可以将它们移动到Cache对象。
基本上,检查它们的用法并提出适当的存储范围。可以将它们留在Session中,如果这是必要的,但你需要了解其影响和影响。