- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当我需要在我的应用程序中缓存某些东西时,我曾经选择 Web.Caching.Cache。但是我遇到了一些使用 HttpApplicationState 的遗留代码。
既然 Web.Caching.Cache 功能更强大、更灵活(似乎更多),那么有没有更好的情况使用 HttpApplicationState 呢??
如果您能向我展示一些示例,我将不胜感激:-)
最佳答案
两者 HttpApplicationState
和 Web.Caching.Cache
可用于存储可在整个 ASP.Net 应用程序中全局访问的信息。但是,它们有非常不同的用途。HttpApplicationState
用于存储通常不会更改的应用程序数据。它通常位于 Application_Start
在 Global.asax 中,当应用程序启动时。我个人并没有经常使用它,但我相信它通常用于存储小块应用程序配置,这些应用程序配置对应用程序的所有用户都是全局的,并且不会更改或很少更改。进入应用程序状态的东西将无限期地保留在那里,直到应用程序回收。但是当它回收并再次启动时,Application_Start
将再次执行并重新填充它。
需要注意的是HttpApplicationState
是单例,不是线程安全的。因此,当您对其进行更改时,您必须通过调用 Application.Lock()
来锁定和解锁 Application 对象。和 Application.UnLock()
. 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/
在 Web 应用程序中,我只需要一个名为 ProcessManager 的类的实例。一种方法是使其成为单例。另一种方法是使用 HttpApplicationState 来确保我始终访问同一个实例,如下
我正在将 Web 服务迁移到 WCF,以便可以使用二进制编码。我现在意识到无法识别 session 调用和应用程序状态调用。 WCF 应该比 Web 服务更好,所以我假设有更好的方法来做事。 1) 如
我的应用程序在应用程序状态中存储两个相关的数据位。每次我读取这两个值时,我可能(取决于它们的值)都需要更新它们。 因此,为了防止在另一个线程正在读取它们时更新它们,我锁定了应用程序状态。 但是 Htt
我正在使用 MVC2 和 VS2010 开发网站,需要使用应用程序状态全局值。我可以设置一个像 'Application["hits"]=0;' 这样的值在 Global.asax 中,但当尝试在 M
我正在尝试为在 Application_Start 上加载的 ASPNET HttpApplication 测试“插件” . 代码是这样的: private HttpApplication appli
我有一个 Action 过滤器,它在过滤器上下文的 HttpContext 的 HttpApplicationState 中设置一个对象。我想在单元测试中使用此功能,但由于某种原因,该对象未设置在 H
我有以下问题。我正在尝试在应用程序中使用用 ASP.NET 编写的 Web 服务作为中间层,存储在 WCF 服务层中。因此,我实例化了一些 WebService 类,并像普通 C# 方法一样调用 We
当我需要在我的应用程序中缓存某些东西时,我曾经选择 Web.Caching.Cache。但是我遇到了一些使用 HttpApplicationState 的遗留代码。 既然 Web.Caching.Ca
我是一名优秀的程序员,十分优秀!