我们在开发网页时遵循的一个流程,是将页面绑定到一个或多个会话变量,这些会话变量仅用于该页面,用于保存当前处理对象,因此在关闭页面时不需要它们。
如何在关闭页面时丢弃这些会话变量?
关于该技术或如何解决该问题有什么建议吗?
离开/关闭页面时不会引发服务器端事件。此外,当离开页面时,不会调用 Session_End 事件(在其他答案中提到),因为用户可能导航到同一 Web 应用程序的其他页面(因此会话将继续存在)。
我可以想到 3 种可能的方法来解决(或解决)这个问题:
1 - use 视图状态以页面范围存储数据。这就是 ViewState 的用途,除非您有大量数据,否则这应该不是问题。如果您有大量数据,请记住,对于每个请求,数据都会被序列化/反序列化并发送到客户端/返回服务器(这可能会导致大量请求,从而导致性能不佳)。
2- 不要将数据放入会话中,而是将其放入Cache(具有较低的滑动过期超时)。在您的页面上,您可以以与会话中相同的方式访问数据,即 data = Cache["data"],但您必须准备好数据已从缓存中删除(您必须重新加载它)例如,再次来自数据库),如果两个请求之间的时间大于过期时间。
3- 使用客户端(javascript)onUnload事件,并触发一些操作(例如 ajax 回调)以从会话中删除数据。但我认为 onUnload 事件不可靠(在任何情况下都不会触发它,例如,当浏览器因崩溃或任务管理器而终止时,或者如果禁用 javascript 时)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)