当我需要在应用程序中缓存某些内容时,我曾经选择了Web.Caching.Cache。但是我遇到了一些使用HttpApplicationState的遗留代码。

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

如果您能给我看一些例子,我将不胜感激:-)

最佳答案

HttpApplicationStateWeb.Caching.Cache均可用于存储可在整个ASP.Net应用程序中全局访问的信息。但是,它们有非常不同的用途。
HttpApplicationState用于存储通常不会更改的应用程序数据。启动应用程序时,通常将其填充在Global.asax中的Application_Start中。我个人并没有使用太多,但是我相信它通常用于存储应用程序所有用户通用的小型应用程序配置,这些配置不会改变或很少更改。进入“应用程序”状态的内容将无限期保留在那里,直到应用程序回收为止。但是,当它回收并再次重新启动时,Application_Start将再次执行并重新填充它。

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

实际上,可以使用三种不同的方式来缓存ASP.Net内容:页面级别,部分页面和数据。我将讨论数据缓存,因为我认为这与您的问题最相关。 ASP.Net缓存用于存储大量的应用程序数据,对于每个请求而言,从数据存储中检索这些数据将非常昂贵。 HttpApplicationState和Cache之间的主要区别是:1)缓存数据旨在通过各种触发器或条件(时间,其他缓存依赖项等)到期并从内存中清除,而HttpApplicationState将永远存在,直到应用程序回收为止;以及2)如果服务器遇到严重的内存压力,则可以从内存中清除缓存数据,因此,您永远不能指望那里存在缓存数据,而必须始终进行测试以查看是否存在缓存数据,而HttpApplicationState总是存在于内存中。

缓存用于将数据存储到更靠近应用程序的位置,不需要在每次请求时从数据库中提取数据。缓存旨在存储大量数据,而智能缓存体系结构可以对性能产生巨大的积极影响。

关于asp.net - 什么时候使用HttpApplicationState而不是Web.Caching.Cache?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10747714/

10-15 03:01