如何在ASP.NET中的多个会话中存储(缓存?)数据

tou*_*ody 2 c# asp.net session caching

我正在编写一个C#ASP.NET Web Form Application.为了简明起见,此应用程序从服务器检索数据并将其显示给用户.

要访问此服务器,我的应用程序需要生成登录信息.生成登录信息需要几分钟.此登录信息每天都会更改,但对于使用我的应用程序的所有人(在特定日期)都是如此.

我的应用程序将每天被数百人使用.让每个用户等几分钟来检索登录信息对我来说很愚蠢.

理想情况下,我想每天收集一次登录信息,并将结果存储在我的服务器上.

有小费吗?我知道.NET有CacheSession,但对于一个个人用户的唯一的存储数据.您是否有任何存储此登录信息的技术,以便我可以从我的代码隐藏中获取它?

Enr*_*eta 7

你错了,Cache在MSDN中的应用程序级别而不是用户级别

应用程序通常可以通过将数据存储在经常访问的内存中并且需要大量处理时间来创建来提高性能.例如,如果您的应用程序使用复杂逻辑处理大量数据,然后将数据作为用户经常访问的报告返回,则每次用户请求时都避免重新创建报告.同样,如果您的应用程序包含一个处理复杂数据但不经常更新的页面,那么服务器在每个请求上重新创建该页面效率都很低.

为了帮助您在这些情况下提高应用程序性能,ASP.NET使用两种基本缓存机制提供缓存.第一个是应用程序缓存,它允许您缓存生成的数据,例如DataSet对象或自定义报表业务对象.第二个是页面输出缓存,它保存页面处理的输出并重新使用输出,而不是在用户再次请求页面时重新处理页面.

我觉得这Application cache比其他人更合适

关于过期

有两种方法可以控制它,你可以将X分钟设置为限制,然后根据需要设置:

  1. 绝对:自创建对​​象后X分钟后过期数据

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

绝对过期:此示例将缓存时间敏感数据一分钟,此时缓存将过期.请注意,绝对到期和滑动到期(下面)不能一起使用.

  1. 滑动:自上次用户使用缓存对象后X分钟后过期数据

    Cache.Insert("key",myFrequentlyAccessedData, null, System.Web.Caching.Cache.NoAbsoluteExpiration,  TimeSpan.FromMinutes(1));
    
    Run Code Online (Sandbox Code Playgroud)

滑动过期:此示例将缓存一些常用数据.数据将保留在缓存中,直到一分钟过去而没有任何引用它.请注意,滑动到期和绝对到期不能一起使用.

示例源:MSDN:缓存API,使用缓存对象