微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net – 何时使用HttpApplicationState而不是Web.Caching.Cache?

当我需要在我的应用程序中缓存一些东西时,我习惯选择Web.Caching.Cache.但我遇到了一些使用HttpApplicationState的遗留代码.

由于Web.Caching.Cache更强大和灵活(似乎更多),是否有更好的使用HttpApplicationState的情况?

如果你能告诉我一些例子,我将非常感激:-)

解决方法

HttpApplicationState和Web.Caching.Cache都可用于存储可在整个ASP.Net应用程序中进行全局访问的信息.但是,它们的用途非常不同.

HttpApplicationState用于存储通常不会更改的应用程序数据.当应用程序启动时,它通常在global.asax中的Application_Start中填充.我个人没有太多使用它,但我相信它通常用于存储应用程序配置的小部分,这些应用程序配置对应用程序的所有用户都是全局的,并且不会很少更改或更改.进入应用程序状态的东西将无限期地保留在那里,直到应用程序回收.但是当它再循环并再次重新启动时,Application_State将再次执行并重新填充它.

重要的是要注意应用程序状态是单例并且不是线程安全的.因此,当您对其进行更改时,必须通过调用Application.Lock()和Application.UnLock()来锁定和解锁Application对象.

实际上有三种不同的方法可以缓存ASP.Net内容页面级别,部分页面和数据.我将讨论数据缓存,因为我认为这与您的问题最相关. ASP.Net缓存用于存储大量的应用程序数据,这些数据对于每个请求从数据存储中检索都是昂贵的.ApplicationState和Cache之间的关键区别是1)缓存数据被设计为过期并从内存中清除通过各种触发器或条件(时间,其他缓存依赖性等),而ApplicationState将永远存在,直到应用程序回收,2)如果服务器遇到严重的内存压力,可以从内存中清除缓存数据,因此永远不能指望它在那里,必须经常测试它是否存在,而ApplicationState将始终存在.

缓存用于存储更靠近应用程序的数据,不需要在每次请求时从数据库提取数据.缓存旨在存储大量数据,智能缓存架构可对性能产生巨大的积极影响.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐