【发布时间】:2010-06-05 04:54:11
【问题描述】:
应用程序状态 (http://msdn.microsoft.com/en-us/library/ms178594.aspx) 是否与使用 System.Web.Caching API 相同?
即
System.web.httpcontent.current.cache[somekey] ?
【问题讨论】:
应用程序状态 (http://msdn.microsoft.com/en-us/library/ms178594.aspx) 是否与使用 System.Web.Caching API 相同?
即
System.web.httpcontent.current.cache[somekey] ?
【问题讨论】:
答案在您自己的链接中。阅读它。
但是,在应用程序状态下存储大块数据可能会填满服务器内存,导致服务器将内存分页到磁盘。作为使用应用程序状态的替代方法,您可以使用 ASP.NET 缓存机制来存储大量应用程序数据。 ASP.NET 缓存还将数据存储在内存中,因此速度非常快;但是,ASP.NET 会主动管理缓存,并在内存不足时删除项目。
【讨论】:
不,它们不一样。
ASP.Net Cache 对象专门针对缓存内容或对象进行了优化,这些内容或对象的寿命很短,或者可以在定义的时间内存活。如果需要释放资源,它将被垃圾收集器蚕食,并且永远无法保证您放入缓存中的内容在您下次查看时会在那里。
System.Application 是一个全局键值集合,可用于以线程安全的方式为所有用户存储全局信息(只要您安全地使用它)。但是,除非您明确删除它,否则不会从 System.Application 中删除任何内容。
【讨论】:
您可能指的是System.Web.Context,而不是content,而且Cache 与HttpApplicationState 不同。
应用程序状态用于在应用程序的生命周期内保持相当静态的项目(除非明确删除)。从您链接的页面中可以看出,建议使用Application:
存储少量经常使用的数据,不会从一个用户更改为另一个用户。
缓存在本质上更加短暂,应该用于生命周期短得多(几秒到几分钟)的内容,并且项目的删除是自动管理的(取决于配置)。
【讨论】:
不一样。
如果数据
你会使用 HttpApplicationState。
如果数据
然后使用缓存。
其他重要区别:
有关更多详细信息,另请参阅etutorials.org 上的这篇文章。
还有这个问题: ASP.NET Page.Cache versus Page.Application storage for data synchronization?
【讨论】:
其实我会说应用状态的主要目的是向后兼容经典的 ASP 应用程序,我永远不会在新的 ASP.NET 应用程序中使用它。
正如其他受访者所说,缓存是主动管理的,因此如果内存不足,数据将被丢弃。
应用程序状态本质上等同于静态哈希表,具有继承自经典 ASP 的锁定语义。
如果您需要存储静态数据,最好将其存储为类的强类型静态字段,而不是使用应用程序状态。如果需要锁定,请使用 .NET 的标准同步机制。
【讨论】: