所以我有一个Web服务,它返回来自某个数据源的数据。 一些数据检索需要很长时间(> 15秒),这在通过ajax调用向网页提供数据时是不可接受的。
我在想我可以用以下方法缓存数据:
在Global.asax中运行一个工作线程,每隔X分钟/小时检索增量并更新一个变量,然后在Web服务中返回该变量。我想到的最佳解决方案是将数据保存在应用程序字典中。
基本上我的问题是,我应该这样做吗? (我们正在谈论可能超过100MB的数据)是否有任何后果呢?如果是这样,最好的解决方案是什么?
答案 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