当前位置:  开发笔记 > 编程语言 > 正文

HttpRuntime.Cache [] vs Application []

如何解决《HttpRuntime.Cache[]vsApplication[]》经验,为你挑选了3个好方法。

我知道大多数人都建议使用HttpRuntime.Cache,因为它具有更大的灵活性......等等.但是如果你希望对象在应用程序的生命周期中保留在缓存中呢?使用Application []对象缓存内容有什么大的缺点吗?



1> Tom Jelen..:

只要您不滥用应用程序状态,我就不会发现将它用于您不希望过期的项目时出现问题.或者,我可能会在使用它的代码附近使用静态变量.这样你就可以避免经历HttpApplicationState然后被强制引用System.Web,如果我想访问我的数据.

但请务必考虑如何使用您存储的对象HttpApplicationState.如果DataSet你继续为每个请求添加内容,那么在某些时候你最终会在网络服务器上占用太多内存.如果您HttpApplicationState在处理请求时继续添加项目,则会发生同样的情况,在某些时候您将强制应用程序重新启动.

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



2> ssmith..:

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


偏好缓存到应用程序的另一个小理由是,如果数据完全敏感,则Cache(稍微)更安全.这里的原因是,在页面级别或通过Trace.axd打开ASP.NET Trace时,默认情况下始终显示Application的内容.由于这可能是偶然发生的,因此应用程序中敏感的任何内容都很容易被公开披露.跟踪输出中不显示缓存内容.
为什么说App已被弃用?我从来没有在任何地方见过它,也没有在文档中说明.

3> Vilx-..:

当您希望项目自动过期或在内存稀疏时回收时使用缓存.否则,如果可以的话,使用静态变量,因为它们会在挖掘ApplicationState集合时产生更好的性能.我不确定何时使用ApplicationState会是什么情况,但肯定会有一些.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有