在我正在开发的应用程序中,我必须存储某些特定用户保持登录到应用程序的时间,不幸的是,在 Web 应用程序中,用户可以通过多种方式注销。
- 用户单击注销。
- 用户会话到期。
- 用户关闭窗口。
- 用户在地址栏中键入另一个站点 URL。
第一个非常简单,因为应用程序可以控制注销过程。但在其他方面,它变得棘手。
你会怎么做来解决这个问题?
在我正在开发的应用程序中,我必须存储某些特定用户保持登录到应用程序的时间,不幸的是,在 Web 应用程序中,用户可以通过多种方式注销。
第一个非常简单,因为应用程序可以控制注销过程。但在其他方面,它变得棘手。
你会怎么做来解决这个问题?
在每个页面视图上,更新您的计数。如果他们注销,那么您就有了准确的衡量标准。如果他们导航离开,或任何其他方法,那么你最多的是他们在一页上的时间长度。
如果准确测量真的很重要,那么也许每分钟都有一个 AJAX“心跳”,但这很可能是矫枉过正。
对于#3 和#4,您可以在 window.onunload 事件上附加一些东西,让您有时间进行计算,但请注意您的代码足够快,以至于在发送 AJAX 请求之前页面不会完全卸载。
就#2而言,nickf建议的“心跳”可能是那里最好的解决方案。