我的任务是在 Web 应用程序上实现服务器端缓存,以提高前端的性能。目标是缓存由 SSAS 多维数据集上的 MDX 查询产生的大型数据集。缓存将在午夜过期,即每天处理多维数据集的时间。我决定使用 Cache.NET API,所以我有这个:
Cache.Insert("MDXResult", myMDXDataSetThatExpiresAtMidnight, null,
DateTime.Now.AddMinutes(getMinutesUntilMidnight()), TimeSpan.Zero);
让我烦恼的是我在 ASP.NET 缓存的 MSDN 页面上读到的内容:技术和最佳实践:
将数据存储在 Cache 中的最简单方法是使用键对其进行分配,就像 HashTable 或 Dictionary 对象一样:
Cache["key"] = "value";
这会将项目存储在缓存中而没有任何依赖关系,因此除非缓存引擎将其删除以便为其他缓存数据腾出空间,否则它不会过期。
最后一点 -缓存引擎删除缓存数据以便为其他缓存数据腾出空间这一事实- 它是否仅适用于上述项目存储在缓存中而没有任何依赖关系的情况?我如何确定 myMDXDataSetThatExpiresAtMidnight
缓存引擎不会在其到期时间之前清除缓存?
或者,是否有任何方法可以控制为服务器端缓存分配的空间量,例如 web.config 中的设置或类似设置,以确保不会无意中清除缓存?