使用Application_Start注意事项进行ASP预缓存

时间:2011-08-08 04:11:34

标签: asp.net caching application-start

我正在设计一个Web API,它需要对大型数据集进行快速只读访问,希望能够持续存储并准备好访问。访问将来自静态类,它将对数据执行一些超快速查找。

所以,我想预先缓存Dictionary<string,Dictionary<string,Dictionary<string,myclass>>>,第三级字典中的元素总数约为1百万,最终会增加,但可以说不超过200万。 'myclass'是一个小类,有一个(小)字符串列表,一个int,一个枚举和几个bool,所以没什么大不了的。它的内存应该超过100mb。

据我所知,这样做的方法就是调用我的StaticClass.Load()方法从Global.asax中的Application_Start事件中读取所有这些数据。

我想知道我需要考虑/担心的事情。我猜它不仅仅是调用Load()然后假设一切都可以用于将来的访问。即使API没有被击中几个小时,GC是否知道将数据保留在那里?

为了使事情复杂化,我想每天重新加载这些数据。我想我只能丢弃旧的数据集并从另一个文件加载新的数据集,但我稍后会讨论。

干杯

3 个答案:

答案 0 :(得分:0)

标准ASP.net application Cache可以在这里为您服务。看看这个article。通过这种方式,您可以构建依赖管理(文件更改)或基于时间的到期。链接的文章显示了一个On_start应用程序

我关心的是您要缓存的内容的大小。

答案 1 :(得分:0)

请参阅我的类似问题IIS6 ASP.NET 2.0 Application Cache - data storage options and performance for large amounts of data但特别是Marc及其最后一段关于大缓存的选项的答案,我认为这些选项适用于您的情况。

答案 2 :(得分:0)

干杯球员

我还发现这篇文章解决了以下选项:http://www.asp.net/data-access/tutorials/caching-data-at-application-startup-cs

没有什么能真正为大量数据提供建议 - 或者甚至定义为“大量”数据。我会继续做我的研究,但Redis看起来很不错