在HttpApplication.Application中保存数据时的最佳实践

时间:2016-09-18 16:27:31

标签: asp.net caching httpapplication

所以我有一个Web服务,它返回来自某个数据源的数据。 一些数据检索需要很长时间(> 15秒),这在通过ajax调用向网页提供数据时是不可接受的。

我在想我可以用以下方法缓存数据:

在Global.asax中运行一个工作线程,每隔X分钟/小时检索增量并更新一个变量,然后在Web服务中返回该变量。我想到的最佳解决方案是将数据保存在应用程序字典中。

基本上我的问题是,我应该这样做吗? (我们正在谈论可能超过100MB的数据)是否有任何后果呢?如果是这样,最好的解决方案是什么?

2 个答案:

答案 0 :(得分:0)

在这种情况下,您可能最好使用缓存,因为如果服务器内存不足,它会自动刷新。

请参阅'应用程序注意事项'在这里:https://msdn.microsoft.com/en-us/library/ms178594.aspx

答案 1 :(得分:0)

这实际上取决于数据的性质。缓存是数据的完美解决方案,这些数据不会经常发生变化并且有些静态。 您还可以对动态数据(经常更改)使用短时缓存,但如果用户使用的数据有点旧,则可以。 .Net框架有一个CacheManager类,它允许您为缓存的数据定义到期日期。 我说使用.Net缓存管理器,而不是读取所有数据并将其保存在内存中,只需缓存x分钟请求的数据。

您可以编写自己的代码,并在何时以及如何刷新缓存数据方面获得创意。例如,您可以向缓存数据添加计数器属性并计算从缓存访问数据的时间,然后通过扩展其到期时间戳来刷新数据以扩展缓存数据的生存期。

看一下这个链接的开头: http://cachemanager.net/Documentation/Index/cachemanager_getting_started