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将始终存在.

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

相关文章

### 创建一个gRPC服务项目(grpc服务端)和一个 webapi项目(...
一、SiganlR 使用的协议类型 1.websocket即时通讯协议 2.Ser...
.Net 6 WebApi 项目 在Linux系统上 打包成Docker镜像,发布为...
一、 PD简介PowerDesigner 是一个集所有现代建模技术于一身的...
一、存储过程 存储过程就像数据库中运行的方法(函数) 优点:...
一、Ueditor的下载 1、百度编辑器下载地址:http://ueditor....