我想永久地将一个项目添加到缓存中.我使用以下语法:
HttpContext.Current.Cache.Insert(cacheName, c, null, Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration);
Run Code Online (Sandbox Code Playgroud)
我发现ASP.NET仍然有时会从缓存中删除项目.
关于如何防止这种情况的任何想法(除了删除缓存和使用存储在静态成员中的字典?
马特拉
use*_*706 22
您无法阻止ASP.NET从缓存中删除项目(例如,当内存不足时).
你不可能完全阻止从ASP.NET缓存中删除某些东西(即HttpContext.Current.Cache对象),这非常依赖于设计.
错误!如果使用CacheItemPriority.NotRemovable标记项目,则可以防止将项目从asp.net缓存中删除.每个其他缓存的数据(应用程序,会话等)都以这种方式存储在HttpRuntime缓存中.
人们总是倾向于认为即使这个优先级也不会阻止您的数据过期,但这是由于缺乏适当的文档.我认为这种混淆伴随着从缓存中手动删除这样一个项目的能力,或者由于为它设置的依赖项而被删除的项目.
因此,如果您从未手动删除它,并且从不指定可以删除它的依赖项,那么您可以在appdomain的生命周期中使用您的项目.
我的回答不正确。请参阅此处以获得正确答案。
您无法阻止 ASP.NET 从缓存中删除项目(例如,当内存不足时)。
如果您需要在应用程序的整个生命周期中存储数据,请将其放入 ApplicationState 集合中,例如:
Application["myData"] = ...;
Run Code Online (Sandbox Code Playgroud)
这类似于 SessionState 集合,但正如名称所示,它是应用程序范围的。
归档时间: |
|
查看次数: |
8385 次 |
最近记录: |