Web 应用程序中的会话超时通常表示空闲时间——即用户不使用应用程序的时间段。
现在,如果编写了一个每 5 分钟发布一次请求的自动脚本会怎样——该用户的会话不会无休止地进行吗?既然如此,从长远来看,这种方法不会给应用程序带来沉重的负担,影响其性能吗?
运行对服务器的自动调用,比如通过 AJAX 请求,将使会话保持活动状态。通常这就是重点。这样做的一个有趣的副作用是,如果请求可预测且有规律地发生,您可以将其用作“ping”来确定用户的浏览器是否仍处于打开状态。如果错过一两个 ping,您可以提前关闭会话并实际释放资源,而不是让会话超时。
您希望会话尽可能小。也就是说,如果每个人都开始这样做,它当然会加载您的应用程序,并带有(out)会话。如果您认为您的用户被迫这样做,请考虑原因,因为您的应用程序缺少重要功能或强迫他们做某事。
现在,不管怎样,如果您希望有很多用户同时处于活动状态,那么比单个服务器不会做的多得多,那么您最终会导致会话退出进程。如果会话在 Sql Server 中,它只是保存的数据,所以在这种情况下我们不会讨论内存使用情况。
是的,是的。
这就是为什么如果你要为 web 编写一个应用程序,你真的想找到一种方法来实现它而不使用服务器端会话。通常,您将能够找到使用 cookie 实现相同功能的方法——然后会话数据是客户端的,所以谁在乎它们是否永久保持活动状态。
我为严重依赖会话数据的应用程序做了类似的事情。
我所做的是将 IIS 超时设置为相对较低的数字,例如 10 分钟,然后进行定时 AJAX 调用,每 5 分钟 ping 一个空白页。
这种开销实际上相当低,因为您所做的只是请求一个空白页面,如果有人关闭他们的浏览器,会话将在 10 分钟内结束。
嗯......我猜“这取决于”你应该问自己的第一个问题是你是否需要会话。
如果你有一个自动化的过程,我猜你真的不需要使用 session.
在这种情况下,要么关闭它,要么不用担心。
我猜你的会话表会大一点,但另一方面你不会拆除并重新创建会话。我看不出这将如何“大量加载”应用程序。我想这取决于应用程序本身以及用于维护会话状态的内存量。
只要他们打开浏览器,它就会允许用户的会话无休止地进行。如果需要长时间保持会话活动,您还可以通过数据库而不是内存来跟踪会话。
此外,如果您担心无限期的打开会话,您可以从会话打开时开始实施超时,如果有延长的空闲时间。