我正在编写一个C#ASP.NET Web窗体应用程序。为了简明起见,该应用程序从服务器检索数据并将其显示给用户。
要访问此服务器,我的应用程序需要生成登录信息。生成登录信息需要几分钟。此登录信息每天都会更改,但对于使用我的应用程序的所有人(在特定日期)都是如此。
我的应用程序每天会被数百人使用。让每个用户等几分钟来检索登录信息对我来说很愚蠢。
理想情况下,我想每天收集一次登录信息,并将结果存储在我的服务器上。
任何提示?我知道.NET有Cache
和Session
,但那些只存储一个用户的数据。你有任何技术来存储这个登录信息,以便我可以从我的代码隐藏中获取它吗?
答案 0 :(得分:7)
你错了,缓存在应用程序级别工作,而不是在用户级别,从MSDN
应用程序通常可以通过存储数据来提高性能 经常访问并且需要很大的内存 处理创建的时间。例如,如果您的应用程序处理 使用复杂逻辑的大量数据然后返回数据 用户经常访问的报告,有效避免 每次用户请求时重新创建报告。同样的, 如果您的应用程序包含处理复杂数据的页面但是 虽然不经常更新,但服务器效率低下 每次请求都重新创建该页面。
为了帮助您在这些情况下提高应用程序性能, ASP.NET使用两种基本缓存机制提供缓存。首先 是应用程序缓存,它允许您缓存您生成的数据, 例如DataSet对象或自定义报表业务对象。该 第二个是页面输出缓存,它保存页面的输出 处理并重用输出而不是重新处理页面 当用户再次请求该页面时。
我认为Application cache
比其他人更适合
关于过期
有两种方法可以控制它,你可以将X分钟设置为限制,然后根据需要设置:
绝对:自创建对象后X分钟后过期数据
Cache.Insert("key", myTimeSensitiveData, null, DateTime.Now.AddMinutes(1), TimeSpan.Zero);
绝对过期:这个 示例将缓存时间敏感数据一分钟,在此时间 指出缓存将过期。注意绝对到期和滑动 到期时间(下方)不能一起使用。
滑动:自上次用户使用缓存对象后X分钟后过期数据
Cache.Insert("key",myFrequentlyAccessedData, null, System.Web.Caching.Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(1));
Sliding Expiration:此示例将缓存 一些经常使用的数据。数据将保留在缓存中,直到一个 没有任何引用它的分钟传球。请注意滑动 到期和绝对到期不能一起使用。