首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HttpRuntime.Cache[] vs Application[]

HttpRuntime.Cache[] vs Application[]
EN

Stack Overflow用户
提问于 2008-11-28 21:04:36
回答 3查看 15.5K关注 0票数 30

我知道大多数人推荐使用HttpRuntime.Cache,因为它有更多的灵活性……但是,如果您希望对象在应用程序的生命周期内在缓存中持久化,该怎么办?使用Application[]对象缓存数据有什么大的缺点吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-11-28 22:06:07

只要你不滥用应用程序状态,那么我不认为将它用于你不想过期的项目有什么问题。或者,我可能会在使用它的代码旁边使用静态变量。这样一来,如果我想访问我的数据,您就避免了通过HttpApplicationState,然后被迫引用System.Web。

但是一定要仔细考虑如何使用存储在HttpApplicationState中的对象。如果这是一个你为每个请求不断添加内容的DataSet,那么在某些时候,你最终会消耗掉web服务器上太多的内存。如果您在处理请求时不断向HttpApplicationState添加项目,则可能会发生同样的情况,在某些情况下,您将强制应用程序重新启动。

这可能是在您的情况下使用Cache的优势。消耗大量内存并不是致命的,因为当内存变得稀缺时,您允许ASP.NET释放缓存中的项。

票数 20
EN

Stack Overflow用户

发布于 2009-01-28 05:38:34

应用程序已被缓存弃用。如果您需要具有应用程序范围的内容,则应将其创建为类的静态成员或使用Cache。如果您想使用缓存路由,但又不希望它过期,那么在将值插入到缓存中时,应该使用CacheItemPriority.NotRemovable选项。请注意,可以在使用此优先级的同时仍然使用缓存依赖项,例如,如果您的数据依赖于文件系统中的某些内容。CacheItemPriority所做的就是防止HttpRuntime.Cache在感觉到内存压力时智能地清除该项目,并使用其最近最少使用的算法来清除没有多少用处的项目。

票数 19
EN

Stack Overflow用户

发布于 2008-11-28 22:14:16

如果您希望项目在内存不足时自动过期或被回收,请使用缓存。否则,请尽可能使用静态变量,因为与深入研究ApplicationState集合相比,它们会产生更好的性能。我不是很确定什么时候使用ApplicationState,但肯定会有一些。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/326675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档