1

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

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

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

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

4

2 回答 2

0

对于这种情况,您最好使用缓存,因为如果服务器内存不足,它将自动被清除。

请参阅此处的“应用程序注意事项”: https ://msdn.microsoft.com/en-us/library/ms178594.aspx

于 2016-09-18T16:33:02.453 回答
0

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

您可以编写自己的代码,并在何时以及如何刷新缓存数据方面非常有创意。例如,您可以为缓存的数据添加一个计数器属性并计算从缓存中访问数据的次数,然后通过延长缓存数据的到期时间戳来刷新数据以延长缓存数据的生命周期。

看看这个链接开始:http://cachemanager.net/Documentation/Index/cachemanager_getting_started

于 2016-09-18T16:41:35.427 回答