使用缓存ASP.NET

Iha*_*ajj 0 c# asp.net-mvc session caching

如何在所有用户都可以访问的ASP.NET中使用Cache,而不仅仅是特定的用户上下文,而当用户关闭浏览器窗口或过期时会自动删除此缓存的特定键(如会话对象)?

Uli*_*ses 6

所有用户都可以访问缓存,您可以将其设置为在一段时间后过期:

Cache.Insert("key", myTimeSensitiveData, null, 
DateTime.Now.AddMinutes(1), TimeSpan.Zero);
Run Code Online (Sandbox Code Playgroud)

通过实现global.asax的会话结束事件,您可以在会话到期时删除缓存条目

void Session_End(Object sender, EventArgs E) 
{ 
  Cache.Remove("MyData1");
}
Run Code Online (Sandbox Code Playgroud)

有关Cache的更多详细信息,请参阅

编辑: 关于如何在用户关闭浏览器时做出反应的问题,我认为这不是直截了当的.您可以在客户端尝试javascript来处理"卸载"事件,但这不可靠,因为浏览器/客户端可能只是崩溃.在我看来,"心跳"方法可行,但需要额外的努力.有关详细信息,请参阅此问题.

  • +1.请注意,当用户关闭浏览器时没有事件,并且Session_End不会因进程外(SQL和状态服务)提供而触发. (3认同)