【发布时间】:2013-10-18 08:16:22
【问题描述】:
我的任务是在 Web 应用程序上实现服务器端缓存,以提高前端的性能。目标是缓存由 SSAS 多维数据集上的 MDX 查询产生的大型数据集。缓存将在午夜过期,即每天处理多维数据集的时间。我决定使用 Cache.NET API,所以我有了这个:
Cache.Insert("MDXResult", myMDXDataSetThatExpiresAtMidnight, null,
DateTime.Now.AddMinutes(getMinutesUntilMidnight()), TimeSpan.Zero);
让我烦恼的是我在MSDN page on ASP.NET Caching: Techniques and Best Practices上看到的东西:
将数据存储在Cache中最简单的方法就是简单地分配它, 使用键,就像 HashTable 或 Dictionary 对象:
Cache["key"] = "value";这会将项目存储在缓存中而没有任何依赖关系,所以它 除非缓存引擎将其删除以使 额外缓存数据的空间。
最后一点 - 缓存引擎删除缓存数据以便为额外的缓存数据腾出空间这一事实 - 它是否仅适用于上述情况项目所在的位置存储在缓存中,没有任何依赖项? 如何确保 myMDXDataSetThatExpiresAtMidnight 缓存引擎不会在到期前清除缓存?
或者,是否有任何方法可以控制为服务器端缓存分配的空间量,例如 web.config 或类似设置中的设置,以确保缓存不会被无意清除?
【问题讨论】: