是application state = system.web.httpcontent.cache?

时间:2010-06-04 20:19:37

标签: c# asp.net caching

应用程序状态(http://msdn.microsoft.com/en-us/library/ms178594.aspx)是否与使用System.Web.Caching API相同?

System.web.httpcontent.current.cache [somekey]?

5 个答案:

答案 0 :(得分:3)

答案就在你自己的链接中。阅读它。

  

但是,在应用程序状态下存储大块数据可能会填满服务器内存,导致服务器将内存分页到磁盘。作为使用应用程序状态的替代方法,您可以使用ASP.NET缓存机制来存储大量应用程序数据。 ASP.NET缓存还将数据存储在内存中,因此非常快;但是,ASP.NET会主动管理缓存,并在内存不足时删除项目。

答案 1 :(得分:0)

不,他们不一样。

ASP.Net Cache对象专门用于缓存短暂或可以在指定时间内生存的内容或对象。如果需要释放资源,它将被垃圾收集器蚕食,并且永远不能保证你下次看到时放入缓存中的东西会存在。

System.Application是键值的全局集合,可用于以线程安全的方式将信息全局存储到所有用户(只要您安全地使用它)。但是,除非您明确删除它,否则不会从System.Application中删除任何内容。

答案 2 :(得分:0)

您可能意味着System.Web.Context,而不是contentCacheHttpApplicationState不同。

应用程序状态适用于在应用程序生命周期内保持相当静态的项目(除非明确删除)。可以在您链接的页面中阅读,建议使用Application

  

存储少量经常使用的数据,这些数据不会从一个用户更改为另一个用户。

缓存本质上是更短暂的,并且应该用于寿命更短(几秒到几分钟)的内容,并且自动管理项目的删除(取决于配置)。

答案 3 :(得分:0)

不一样。

如果数据

  • 在应用程序有效期内稳定
  • 必须始终可用且不得清除

您使用 HttpApplicationState

如果数据

  • 不一定是应用程序的生命周期所必需的
  • 经常更改
  • 如果需要,可以清除
  • (例如系统内存不足)
  • 如果很少使用
  • ,可以丢弃
  • 在某些情况下应该无效 /刷新(依赖关系规则:时间范围,日期,文件时间戳,......)

然后使用缓存

其他重要差异:

  • 可以更好地将大量数据存储在缓存中,然后服务器可以在内存不足时清除它。
  • 对于多线程操作,缓存是安全的。 Page。应用程序需要锁定

有关详情,请参阅etutorials.org上的这篇文章。

这个问题: ASP.NET Page.Cache versus Page.Application storage for data synchronization?

答案 4 :(得分:0)

实际上我会说应用程序状态的主要目的是向后兼容传统的ASP应用程序,我绝不会在新的ASP.NET应用程序中使用它。

正如其他受访者所指出的那样,Cache被主动管理,以便在内存不足时丢弃数据。

应用程序状态基本上等同于静态Hashtable,其锁定语义是从传统ASP继承的。

如果需要存储静态数据,将它存储为类的强类型静态字段而不是使用Application状态几乎总是更好。如果需要锁定,请使用.NET的标准同步机制。