用户离开页面时删除会话变量

时间:2012-08-25 16:12:33

标签: ajax asp.net-mvc-2 session-variables

  1. 我有一个页面设置会话变量,以便在加载页面时保存页面数据库中的查找列表。

  2. 当从浏览器调用Ajax时,页面还需要访问该查找列表。

  3. 我不想为每个Ajax调用加载数据库中的查找列表,但是如果用户离开页面,我想从会话中删除查找列表。这样做是否有最佳实践或推荐策略?

1 个答案:

答案 0 :(得分:2)

您可以使用javascript清除会话变量

window.onbeforeunload = cleanup;
function cleanup()
{
    // Clear session variable here
}

然而,这并非万无一失,因为用户总是可以禁用javascript等。通常这不会是一个问题,因为会话变量无论如何都会有一个超时。如果您真的担心,您应该删除页面加载时的所有当前会话。

根据您的具体情况,另一个选择是使用Caching.Cache类来保存值。当您将值insert放入缓存中时,可以将它们设置为在TimeSpan之后过期,并将其设置为非常短,例如5分钟左右。

请注意,虽然会话是每个用户,但每个服务器实例只有一个缓存。