Ahm*_*med 2 asp.net asp.net-2.0 session-variables
在开发网页时,我们正在遵循一个过程,就是将页面绑定到一个或多个会话变量,这些会话变量仅用于该页面,以保存当前的处理对象,因此在关闭页面时不需要它们。
关闭页面时如何丢弃这些会话变量?关于该技术或如何解决该问题的任何建议?
离开/关闭页面时,不会引发服务器端事件。同样,当离开页面时,不会调用Session_End事件(在其他答案中提到),因为用户可能会导航到同一Web应用程序的其他页面(因此会话将继续存在)。
我可以想到3种解决(或解决)此问题的方法:
1-使用ViewState通过page-scope存储数据。这就是ViewState的用途,除非您有大量数据,否则应该不会有问题。如果您有很多数据,请记住,对于每个请求,它将被序列化/反序列化并发送到客户端/返回到服务器(这可能会导致大量请求,从而导致性能下降)。
2-而不是将数据放入会话中,而是将其放入缓存中(滑动过期时间很短)。在页面上,您可以通过与会话相同的方式访问数据,即data = Cache [“ data”],但是您必须做好从缓存中删除数据的准备(必须重新加载数据)例如,如果两个请求之间的时间大于到期时间,则再次从DB获取)。
3-使用客户端(javascript)onUnload事件,并触发一些操作(例如ajax回调)以从会话中删除数据。但是我认为onUnload事件是不可靠的(在任何情况下都不会触发该事件,例如,当浏览器因崩溃或任务管理器而终止,或者禁用了javascript时)。
| 归档时间: |
|
| 查看次数: |
4712 次 |
| 最近记录: |