Asp.net 在HttpApplication.Application中保存数据时的最佳做法

Asp.net 在HttpApplication.Application中保存数据时的最佳做法,asp.net,caching,httpapplication,Asp.net,Caching,Httpapplication,所以我有一个web服务,它从某个数据源返回数据。 有些数据检索需要很长时间(>15秒),这在通过ajax调用向网页提供数据时是不可接受的 我想我可以用以下方法缓存数据: 在Global.asax中运行一个工作线程,该线程每X分钟/小时检索一次增量,并更新一个变量,然后该变量将在web服务中返回。我想到的最佳解决方案是将数据保存在应用程序字典中 基本上我的问题是,我应该这样做吗?(我们谈论的是可能超过100MB的数据)这样做有什么后果吗?如果是这样,什么解决方案最好?在这种情况下,您最好使用缓存,

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

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

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


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

在这种情况下,您最好使用缓存,因为如果服务器内存不足,缓存将自动清除


请参阅此处的“应用程序注意事项”:在这种情况下,最好使用缓存,因为如果服务器内存不足,缓存将自动被清除


请参见此处的“应用程序注意事项”:这实际上取决于数据的性质。缓存是不经常更改且有点静态的数据的完美解决方案。 您还可以对动态数据(经常更改)使用短时间缓存,但如果用户使用的数据有点旧,也可以。 .Net framework有一个CacheManager类,可用于定义缓存数据的到期时间。 我想说,与其使用.Net缓存管理器读取所有数据并将其保存在内存中,不如将请求的数据缓存x分钟

您可以编写自己的代码,并在何时以及如何刷新缓存数据方面具有很大的创造性。例如,您可以向缓存的数据添加计数器属性,并计算从缓存访问数据的次数,然后刷新数据或通过延长其到期时间戳来延长缓存数据的生存期

请查看此链接以了解开始:
http://cachemanager.net/Documentation/Index/cachemanager_getting_started这实际上取决于数据的性质。缓存是不经常更改且有点静态的数据的完美解决方案。 您还可以对动态数据(经常更改)使用短时间缓存,但如果用户使用的数据有点旧,也可以。 .Net framework有一个CacheManager类,可用于定义缓存数据的到期时间。 我想说,与其使用.Net缓存管理器读取所有数据并将其保存在内存中,不如将请求的数据缓存x分钟

您可以编写自己的代码,并在何时以及如何刷新缓存数据方面具有很大的创造性。例如,您可以向缓存的数据添加计数器属性,并计算从缓存访问数据的次数,然后刷新数据或通过延长其到期时间戳来延长缓存数据的生存期

请查看此链接以了解开始:
http://cachemanager.net/Documentation/Index/cachemanager_getting_started

这似乎是一个很好的答案,谢谢!但是,您建议使用哪种缓存管理器?是否有内置的缓存管理器?短时间的谷歌搜索产生了cachemanager.net。有什么好处吗?是的。ASP.Net包含一个非常直接的输出缓存。你可以在这里阅读更多:这似乎是一个足够好的答案,谢谢!但是,您建议使用哪种缓存管理器?是否有内置的缓存管理器?短时间的谷歌搜索产生了cachemanager.net。有什么好处吗?是的。ASP.Net包含一个非常直接的输出缓存。您可以在这里阅读更多内容:我们正在查看cachemanager.net!无论如何,我必须读取所有数据并保持更新,因为我向用户显示所有数据。它不完全是“静态的”。此外,假定数据不会在“幕后”更改,因此每次更改数据都会触发重新检索或缓存更新。不过,缓存管理器是一个不错的选择。不过,您的服务器将需要大量内存。您仍然可以使用上次更新或上次加载的日期和时间戳来减少DB调用并提高性能。我在一个企业应用程序中使用了CacheManager类来缓存10000多个并发用户的会话,它对我们非常有效。(我们将会话保存在DB中,以便在服务器场中使用它们)正在查看cachemanager.net!无论如何,我必须读取所有数据并保持更新,因为我向用户显示所有数据。它不完全是“静态的”。此外,假定数据不会在“幕后”更改,因此每次更改数据都会触发重新检索或缓存更新。不过,缓存管理器是一个不错的选择。不过,您的服务器将需要大量内存。您仍然可以使用上次更新或上次加载的日期和时间戳来减少DB调用并提高性能。我在一个企业应用程序中使用了CacheManager类来缓存10000多个并发用户的会话,它对我们非常有效。(我们将会话保存在DB中,以便在服务器场中使用它们)