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

时间:2015-07-07 20:44:24

标签: c# asp.net session caching

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

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

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

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

任何提示?我知道.NET有CacheSession,但那些只存储一个用户的数据。你有任何技术来存储这个登录信息,以便我可以从我的代码隐藏中获取它吗?

1 个答案:

答案 0 :(得分:7)

你错了,缓存在应用程序级别工作,而不是在用户级别,从MSDN

  

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

     

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

我认为Application cache比其他人更适合

关于过期

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

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

    Cache.Insert("key", myTimeSensitiveData, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero); 
    
  2.   

    绝对过期:这个   示例将缓存时间敏感数据一分钟,在此时间   指出缓存将过期。注意绝对到期和滑动   到期时间(下方)不能一起使用。

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

      Cache.Insert("key",myFrequentlyAccessedData, null, System.Web.Caching.Cache.NoAbsoluteExpiration,  TimeSpan.FromMinutes(1));
      
    2.   

      Sliding Expiration:此示例将缓存   一些经常使用的数据。数据将保留在缓存中,直到一个   没有任何引用它的分钟传球。请注意滑动   到期和绝对到期不能一起使用。

      示例来源:MSDN: Caching API, Using the Cache Object