我有一个页面,该页面设置了一个会话变量,以在加载页面时保存来自该页面的数据库的查找列表。
当从浏览器进行 Ajax 调用时,该页面还需要访问该查找列表。
我不想为每个 Ajax 调用从数据库中加载查找列表,但如果用户离开页面,我想从会话中删除查找列表。是否有这样做的最佳实践或推荐策略?
我有一个页面,该页面设置了一个会话变量,以在加载页面时保存来自该页面的数据库的查找列表。
当从浏览器进行 Ajax 调用时,该页面还需要访问该查找列表。
我不想为每个 Ajax 调用从数据库中加载查找列表,但如果用户离开页面,我想从会话中删除查找列表。是否有这样做的最佳实践或推荐策略?
您可以使用类似这样的方法使用 javascript 清除会话变量
window.onbeforeunload = cleanup;
function cleanup()
{
// Clear session variable here
}
然而,这并不是万无一失的,因为用户总是可以禁用 javascript 等。通常这不会是一个问题,因为会话变量无论如何都会有超时。如果您真的很担心,您应该在页面加载时删除所有当前会话。
根据您的情况,另一种选择是使用Caching.Cache
类来保存值。当您将值插入缓存时,您可以将它们设置为在 a 之后过期TimeSpan
,并将其设置为相当短的时间,例如 5 分钟左右。
请注意,虽然会话是每个用户的,但每个服务器实例只有一个缓存。