Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# (ASP.NET缓存API)项目是否可能在其设置到期之前从缓存中删除?_C#_Asp.net_Caching - Fatal编程技术网

C# (ASP.NET缓存API)项目是否可能在其设置到期之前从缓存中删除?

C# (ASP.NET缓存API)项目是否可能在其设置到期之前从缓存中删除?,c#,asp.net,caching,C#,Asp.net,Caching,我的任务是在web应用程序上实现服务器端缓存,以提高前端的性能。目标是缓存由SSAS多维数据集上的MDX查询生成的大型数据集。缓存将在午夜过期,也就是每天处理多维数据集的时候。我决定使用Cache.NET API,因此我有以下内容: Cache.Insert("MDXResult", myMDXDataSetThatExpiresAtMidnight, null, DateTime.Now.AddMinutes(getMinutesUntilMidnight()), TimeSpan.Z

我的任务是在web应用程序上实现服务器端缓存,以提高前端的性能。目标是缓存由SSAS多维数据集上的MDX查询生成的大型数据集。缓存将在午夜过期,也就是每天处理多维数据集的时候。我决定使用Cache.NET API,因此我有以下内容:

Cache.Insert("MDXResult", myMDXDataSetThatExpiresAtMidnight, null,
    DateTime.Now.AddMinutes(getMinutesUntilMidnight()), TimeSpan.Zero);

让我烦恼的是我在报纸上读到的东西:

在缓存中存储数据的最简单方法就是分配数据, 使用键,就像哈希表或字典对象一样:

Cache["key"] = "value";
这将在没有任何依赖项的情况下将项目存储在缓存中,因此 将不会过期,除非缓存引擎将其删除以使 为额外的缓存数据留出空间

最后一点——缓存引擎删除缓存数据以便为其他缓存数据腾出空间的事实——是否仅适用于上面的情况,即项目存储在缓存中而没有任何依赖项如何确保缓存引擎在其到期时间之前不会清除午夜到期的MyMDXDataset的缓存?


或者,是否有任何方法来控制分配给服务器端缓存的空间量,例如web.config中的设置或类似设置,以确保不会无意中清除缓存

可以随时删除所有条目,包括那些具有依赖关系的条目。依赖项仅帮助缓存引擎计算项目何时过期

您不能以任何方式强制项目留在缓存中。缓存可能会因已知、未知和其他原因将其删除。通常是由于过期(基于时间或依赖关系)或内存压力。但是,您可以使用,它接受
CacheItemRemovedCallback onRemoveCallback
,这可能是一个计算新项(或知道旧项)并再次添加它的函数。我不确定实际的时间安排,但我想在很短的一段时间内,该项不在缓存中,而您的回调已执行,并且尚未添加新项


您可以使用web.config中的配置来配置缓存。

回答得很好,这正是我想要的。谢谢