Web应用程序中的会话超时

时间:2009-03-10 14:55:32

标签: session timeout

Web应用程序中的会话超时通常表示空闲时间 - 即用户不使用该应用程序的时间段。

现在,如果编写了一个每5分钟发布一次请求的自动脚本,该用户的会话是否会无休止地继续下去呢?在这种情况下,从长远来看,这种方法不会大量加载影响其性能的应用程序吗?

7 个答案:

答案 0 :(得分:4)

通过AJAX请求运行对服务器的自动调用,使会话保持活动状态。通常这是重点。一个有趣的副作用是,如果请求以可预测和有规律的方式发生,您可以将其用作“ping”来确定用户的浏览器是否仍处于打开状态。如果错过了一个或两个ping,你可以提前关闭会话,并且实际上比你让会话超时的时候更快地释放资源。

答案 1 :(得分:1)

是的,是的。

这就是为什么如果您要为Web编写应用程序,您真的想找到一种方法来实现它而不使用服务器端会话。通常,您将能够找到使用cookie实现相同功能的方法 - 然后会话数据是客户端的,因此他们会关心它们是否永久保持活动状态。

答案 2 :(得分:1)

我为一个严重依赖会话数据的应用程序做了类似的事情。

我所做的是将IIS超时设置为一个相对较低的数字,比如10分钟,然后进行定时的AJAX调用,每5分钟ping一个空白页。

这个开销实际上相当低,因为您所做的只是请求一个空白页面,如果一个人关闭他们的浏览器,会话将在10分钟后结束。

答案 3 :(得分:1)

您希望会话尽可能小。也就是说,如果每个人都开始这样做,当然它会加载你的应用程序,用(out)会话。如果您认为您的用户被迫这样做,请考虑原因,因为您的应用程序缺少重要功能或强迫他们进入某些功能。

现在,无论如何,如果您希望同时有很多用户处于活动状态,而不是单个服务器不会这样做,那么您最终会将会话停止进行。如果会话在Sql Server中,它只是保存的数据,所以在这种情况下我们不会讨论内存使用情况。

答案 4 :(得分:0)

嗯......我想“它取决于”你应该问自己的第一个问题是你是否需要会话。

如果你有一个自动化过程,我的猜测是你真的不需要使用会话。

在这种情况下,要么将其关闭,要么不要担心。

答案 5 :(得分:0)

我猜您的会话表会有点大,但另一方面,您不会拆除并重新创建会话。我不知道这将如何“大量加载”应用程序。我想这取决于应用程序本身以及用于维护会话状态的内存量。

答案 6 :(得分:0)

只要他们的浏览器打开,它就会允许使用的会话无休止地继续。如果需要在较长时间内保持会话处于活动状态,您还可以通过数据库而不是内存来跟踪会话。

此外,如果您担心无限期开放会话,您可以在会话开启时以及延长空闲时间时实施超时。

相关问题