session 变量在开发大型 Web 应用程序时有哪些限制。还有什么是会话变量的最佳选择。
请为我提供SESSION VARIABLES 的替代方案
要了解不使用会话的优点,您必须了解会话的工作原理。
在默认设置中,
当用户向服务器发送请求时,会同时发送会话 cookie。它包含一个标识符,服务器使用该标识符来定位该特定用户的会话数据。
您可以将 ASP.NET 配置为
现在为了禁用会话状态的优点:
不用说,为大量用户存储大量数据会加剧这些问题。
有关更多信息,请参阅
(最后一篇文章有点过时了,但仍然很好读)。
备择方案
希望这可以帮助。
这取决于您的应用程序的业务逻辑,在某些情况下会话可能是最佳选择,但是有很多替代方案,如果您对应用程序的每个请求都有不同的数据,则应使用会话,您可以将数据隐藏字段与你的表格,但你的问题又是一个小问题,你必须分析你的需求而不是根据它你必须决定是使用会话还是其他替代解决方案,如果我必须存储用户的 id我肯定会去参加会议,因为每个用户都会有所不同,我不会在会议中保留非常大的数据,就像在会议中保留很少开发人员所做的数据集一样。如果您使用会话,您希望将其保持在进程中或服务器中,那么也会出现问题,
会话变量的优缺点见这里
由于会话状态中的数据存储在服务器内存中,因此在处理大量数据时不建议使用会话状态。会话状态变量会一直留在内存中,直到你销毁它,所以太多的变量会影响内存性能。
会话变量和 cookie 是同义词。因此,如果用户已将其浏览器设置为不接受任何 cookie,则您的 Session 变量将不适用于该特定的网络冲浪者!
当用户访问页面时,每个会话变量都会创建一个实例,并且这些变量会在用户离开页面后持续 20 分钟!(实际上,这些变量会一直持续到它们“超时”为止。这个超时时间是由网络服务器管理员设置的。我见过一些网站,这些变量会在短短 3 分钟内崩溃,还有一些会持续 10 分钟,还有一些会持续坚持默认20分钟。)所以,如果你在Session中放了任何大对象(比如ADO记录集、连接等),你就自找大麻烦了!随着访问者数量的增加,通过在 Session 中放置大型对象,您的服务器将体验到巨大的性能问题!