我已经开始考虑重写客户网站上的一些页面,我可以看到,例如,只要有人登录,就会设置 53 个 session 变量。
对我来说,在您登录后立即设置所有内容,然后在整个网站上返回这些 session 或添加新 session ,这似乎很疯狂。
他们的网站经常会收到错误,因为许多 session 中的一个已失去其值(value)。
所以我的问题是重新制作这些页面的最佳方法是什么。
- 继续使用这个数量的 session 是个好主意吗?
- 是否有使用 Session 的更好选择?
- 网站上的所有页面都需要一些变量,那么是从每个页面的数据库中检索这些变量还是在 session 中设置这些变量更好?
我相信应该只需要一个 session ,那就是 USERNAME/USER-ID,其他一切都应该在需要时从数据库中获取。
提前致谢
最佳答案
如此频繁地使用 session 通常不是一个好主意,但这取决于存储在那里的数据类型。如果它是一堆字符串和整数值,它可能不是太在意,但如果它们在 session 中存储健壮的对象和/或大量数据,我肯定会考虑重构它。
根据经验,我尽量避免将 session 用于与用户相关的数据以外的任何内容。将 session 用于除此以外的目的可能很诱人,但如果设计和实现良好,您实际上并不需要这样做。
这里有一些关于在哪里存储东西的指导原则:
对于特定于用户且在整个应用程序中频繁访问的数据,利用 session 减少对数据库的访问
对于或多或少静态且不依赖于用户或与用户无关的数据,利用缓存或应用程序状态来减少对数据库的访问
对于页面特定的数据,使用 ViewState 和/或隐藏字段。但是,不要使用 ViewState 来存储大型对象或数据集
对于用户可以安全查看的数据,考虑使用 QueryString 在页面之间传递信息
上述原则通常会指导您朝着正确的方向前进,但也有异常(exception)。只需考虑将数据存储在何处以及为什么将数据存储在那里,就可以了。
关于asp.net - 在整个网站中使用 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9993482/